1use cached::proc_macro::cached;
2use common::enums::roles::Roles;
3use common::model::status_message::StatusMessage;
4use common::remote::{get, post, put, services};
5use hyper::HeaderMap;
6use uuid::Uuid;
7
8use crate::dto::auth_request::AuthRequest;
9use crate::dto::get_token_response::GetTokenResponse;
10use crate::dto::public_teacher_response::PublicTeacherResponse;
11use crate::dto::short_user_reponse::ShortUserResponse;
12use crate::dto::user_with_roles_response::UserWithRolesResponse;
13use crate::jsonb::discover_settings::DiscoverSettings;
14
15pub fn find_robo_teacher(headers: HeaderMap) -> Result<UserWithRolesResponse, String> {
16 get::<UserWithRolesResponse>(
17 services::USER_API,
18 String::from("/user/getRoboTeacher"),
19 headers,
20 )
21}
22
23#[cached(
33time=5,
34key = "Uuid",
35convert = r#"{ id }"#
36)]
37pub fn find_by_id(id: Uuid, headers: HeaderMap) -> Result<ShortUserResponse, String> {
38 get::<ShortUserResponse>(services::USER_API, format!("/user/{}", id), headers)
39}
40pub fn get_medics_or_admins_for_org(org_id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
41 get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findMedicsOrAdmins/{}", org_id), headers)
42}
43pub fn get_admins_for_org(org_id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
44 get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findAdmins/{}", org_id), headers)
45}
46pub fn find_parent_with_childs(id: Uuid, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
47 get::<Vec<ShortUserResponse>>(services::USER_API, format!("/user/findParentWithChilds/{}", id), headers)
48}
49pub fn change_discover_settings(headers: HeaderMap, settings: DiscoverSettings) -> Result<Vec<UserWithRolesResponse>, String> {
50 put(services::USER_API, format!("/user/setOrgDiscovery"), headers, settings)
51}
52pub fn find_parents_for_users(ids: Vec<Uuid>, headers: HeaderMap) -> Result<Vec<ShortUserResponse>, String> {
53 post(services::USER_API, format!("/user/findParentsForUserList"), headers, ids)
54}
55
56pub fn find_by_ids(
57 ids: Vec<Uuid>,
58 headers: HeaderMap,
59) -> Result<Vec<ShortUserResponse>, String> {
60 post::<_, Vec<ShortUserResponse>>(
61 services::USER_API,
62 String::from("/user/getUsersByListIds"),
63 headers,
64 ids,
65 )
66}
67pub fn find_by_roles_and_org(
68 ids: Vec<String>,
69 headers: HeaderMap,
70) -> Result<Vec<ShortUserResponse>, String> {
71 post::<_, Vec<ShortUserResponse>>(
72 services::USER_API,
73 String::from("/user/findByRolesAndOrg"),
74 headers,
75 ids,
76 )
77}
78pub fn find_by_roles(
79 roles: Vec<Roles>,
80 headers: HeaderMap,
81) -> Result<Vec<ShortUserResponse>, String> {
82 post::<_, Vec<ShortUserResponse>>(
83 services::USER_API,
84 String::from("/user/getUsersByRoles"),
85 headers,
86 roles,
87 )
88}
89
90pub fn public_get_teachers_info(
91 uuids: Vec<Uuid>,
92 headers: HeaderMap,
93) -> Result<Vec<PublicTeacherResponse>, String> {
94 post::<_, Vec<PublicTeacherResponse>>(
95 services::USER_API,
96 String::from(format!("{}", "/publicUser/getTeachersInfo")),
97 headers,
98 uuids,
99 )
100}
101
102pub fn get_token(headers: HeaderMap, dto: AuthRequest) -> Result<GetTokenResponse, String> {
103 post::<_, GetTokenResponse>(
104 services::USER_API,
105 String::from("/user/getToken"),
106 headers,
107 dto,
108 )
109}
110pub fn get_no_mfa_token(headers: HeaderMap, dto: AuthRequest) -> Result<GetTokenResponse, String> {
111 post::<_, GetTokenResponse>(
112 services::USER_API,
113 String::from("/user/getNoMfaToken"),
114 headers,
115 dto,
116 )
117}
118
119pub fn check_is_chat_available(headers: HeaderMap) -> Result<StatusMessage, String> {
120 get(
121 services::USER_API,
122 "/user/checkIsChatAvailable".to_string(),
123 headers,
124 )
125}