1use common::model::status_message::StatusMessage;
2use common::remote::services;
3use common::remote::{delete, get, post, put};
4use hyper::HeaderMap;
5use uuid::Uuid;
6
7use crate::dto::subgroup_request::SubgroupRequest;
8use crate::dto::subgroup_response::SubgroupResponse;
9
10pub fn add_user_to_subgroups(
11 subgroups: Vec<Uuid>,
12 student: Uuid,
13 headers: HeaderMap,
14) -> Result<Vec<SubgroupResponse>, String> {
15 post::<_, Vec<SubgroupResponse>>(
16 services::JOURNAL_API,
17 String::from(format!("{}{}", "/subgroup/addUserToSubgroups/", student)),
18 headers,
19 subgroups,
20 )
21}
22
23pub fn clear_class(class_id: Uuid, headers: HeaderMap) -> Result<Vec<SubgroupResponse>, String> {
24 post::<_, Vec<SubgroupResponse>>(
25 services::JOURNAL_API,
26 String::from(format!("{}{}", "/subgroup/clearClass/", class_id)),
27 headers,
28 "",
29 )
30}
31
32pub fn add_user_to_all_subgroups(
33 subgroups: Vec<Uuid>,
34 student: Uuid,
35 headers: HeaderMap,
36) -> Result<Vec<SubgroupResponse>, String> {
37 post::<_, Vec<SubgroupResponse>>(
38 services::JOURNAL_API,
39 String::from(format!("{}{}", "/subgroup/addUserToAllSubgroups/", student)),
40 headers,
41 subgroups,
42 )
43}
44
45pub fn transfer_student(
46 subgroups: Vec<Uuid>,
47 student: Uuid,
48 old_school_class: Uuid,
49 headers: HeaderMap,
50) -> Result<Vec<SubgroupResponse>, String> {
51 post::<_, Vec<SubgroupResponse>>(
52 services::JOURNAL_API,
53 String::from(format!(
54 "{}/{}/{}",
55 "/subgroup/transferStudent", student, old_school_class
56 )),
57 headers,
58 subgroups,
59 )
60}
61
62pub fn get_subgroups_for_my_org(headers: HeaderMap) -> Result<Vec<SubgroupResponse>, String> {
63 get::<Vec<SubgroupResponse>>(services::JOURNAL_API, "/subgroup".to_string(), headers)
64}
65
66pub fn set_schedule(
67 schedule_id: Uuid,
68 subgroup_id: Uuid,
69 headers: HeaderMap,
70) -> Result<SubgroupResponse, String> {
71 put::<_, SubgroupResponse>(
72 services::JOURNAL_API,
73 format!(
74 "{}/{}/{}",
75 "/subgroup/setSchedule", schedule_id, subgroup_id
76 ),
77 headers,
78 "",
79 )
80}
81
82pub fn create_subgroup(
83 sbgrp: SubgroupRequest,
84 headers: HeaderMap,
85) -> Result<Vec<SubgroupResponse>, String> {
86 post::<_, Vec<SubgroupResponse>>(
87 services::JOURNAL_API,
88 String::from(format!("{}", "/subgroup")),
89 headers,
90 sbgrp,
91 )
92}
93
94pub fn create_subgroup_list(
95 sbgrp: Vec<SubgroupRequest>,
96 headers: HeaderMap,
97) -> Result<Vec<SubgroupResponse>, String> {
98 post::<_, Vec<SubgroupResponse>>(
99 services::JOURNAL_API,
100 "/subgroup/createList".to_string(),
101 headers,
102 sbgrp,
103 )
104}
105
106pub fn delete_subgroup(subgroup: Uuid, headers: HeaderMap) -> Result<StatusMessage, String> {
107 delete::<StatusMessage>(
108 services::JOURNAL_API,
109 format!("{}{}", "/subgroup/", subgroup),
110 headers,
111 )
112}
113
114pub fn public_get_subgroup_by_list_id(
115 uuids: Vec<Uuid>,
116 headers: HeaderMap,
117) -> Result<Vec<SubgroupResponse>, String> {
118 post::<_, Vec<SubgroupResponse>>(
119 services::JOURNAL_API,
120 String::from(format!("{}", "/publicSubgroup")),
121 headers,
122 uuids,
123 )
124}
125
126pub fn get_subgroups_by_list_id(
127 uuids: Vec<Uuid>,
128 headers: HeaderMap,
129) -> Result<Vec<SubgroupResponse>, String> {
130 post(
131 services::JOURNAL_API,
132 String::from(format!("{}", "/subgroup/byListIds")),
133 headers,
134 uuids,
135 )
136}