userlib/remote/
user_remote.rs

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/// Returns a `ShortUserResponse`. Gives information about the provided user id.
24///
25/// # Example
26///
27/// # Data
28///
29/// *URL:* get - "user/{user_id}"
30///
31/// *Required Role:* Registered
32#[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}