use cached::proc_macro::cached;
use common::enums::roles::Roles;
use common::model::status_message::StatusMessage;
use common::remote::{get, post, services};
use hyper::HeaderMap;
use uuid::Uuid;
use crate::dto::auth_request::AuthRequest;
use crate::dto::get_token_response::GetTokenResponse;
use crate::dto::public_teacher_response::PublicTeacherResponse;
use crate::dto::short_user_reponse::ShortUserResponse;
use crate::dto::user_with_roles_response::UserWithRolesResponse;
pub fn find_robo_teacher(headers: HeaderMap) -> Result<UserWithRolesResponse, String> {
get::<UserWithRolesResponse>(
services::USER_API,
String::from("/user/getRoboTeacher"),
headers,
)
}
#[cached(
time=5,
key = "Uuid",
convert = r#"{ id }"#
)]
pub fn find_by_id(id: Uuid, headers: HeaderMap) -> Result<ShortUserResponse, String> {
get::<ShortUserResponse>(services::USER_API, format!("/user/{}", id), headers)
}
pub fn get_medics_or_admins_for_org(org_id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findMedicsOrAdmins/{}", org_id), headers)
}
pub fn get_admins_for_org(org_id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findAdmins/{}", org_id), headers)
}
pub fn find_parent_with_childs(id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findParentWithChilds/{}", id), headers)
}
pub fn find_parents_for_users(ids: Vec<Uuid>, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
post(services::USER_API, format!("/user/findParentsForUserList"), headers, ids)
}
pub fn find_by_ids(
ids: Vec<Uuid>,
headers: HeaderMap,
) -> Result<Vec<ShortUserResponse>, String> {
post::<_, Vec<ShortUserResponse>>(
services::USER_API,
String::from("/user/getUsersByListIds"),
headers,
ids,
)
}
pub fn find_by_roles_and_org(
ids: Vec<String>,
headers: HeaderMap,
) -> Result<Vec<ShortUserResponse>, String> {
post::<_, Vec<ShortUserResponse>>(
services::USER_API,
String::from("/user/findByRolesAndOrg"),
headers,
ids,
)
}
pub fn find_by_roles(
roles: Vec<Roles>,
headers: HeaderMap,
) -> Result<Vec<ShortUserResponse>, String> {
post::<_, Vec<ShortUserResponse>>(
services::USER_API,
String::from("/user/getUsersByRoles"),
headers,
roles,
)
}
pub fn public_get_teachers_info(
uuids: Vec<Uuid>,
headers: HeaderMap,
) -> Result<Vec<PublicTeacherResponse>, String> {
post::<_, Vec<PublicTeacherResponse>>(
services::USER_API,
String::from(format!("{}", "/publicUser/getTeachersInfo")),
headers,
uuids,
)
}
pub fn get_token(headers: HeaderMap, dto: AuthRequest) -> Result<GetTokenResponse, String> {
post::<_, GetTokenResponse>(
services::USER_API,
String::from("/user/getToken"),
headers,
dto,
)
}
pub fn get_no_mfa_token(headers: HeaderMap, dto: AuthRequest) -> Result<GetTokenResponse, String> {
post::<_, GetTokenResponse>(
services::USER_API,
String::from("/user/getNoMfaToken"),
headers,
dto,
)
}
pub fn check_is_chat_available(headers: HeaderMap) -> Result<StatusMessage, String> {
get(
services::USER_API,
"/user/checkIsChatAvailable".to_string(),
headers,
)
}