chimes_rust/handler/
chimes_holiday.rs1use rbatis::{DateTimeNative, Page};
5
6use crate::entity::ChimesHolidayInfo;
7use actix_web::{web, HttpResponse, Result};
8use chimes_auth::ApiResult;
9use chimes_utils::get_rbatis;
10
11#[post("/api/v1/holiday/save")]
12pub async fn holiday_save(req: web::Json<ChimesHolidayInfo>) -> Result<HttpResponse> {
13 let rb = get_rbatis();
14 let mut val = req.to_owned();
15
16 match val.save(rb).await {
17 Ok(_st) => {
18 let ret: web::Json<ApiResult<ChimesHolidayInfo>> = web::Json(ApiResult::ok(val));
19 Ok(HttpResponse::Ok().json(ret))
20 }
21 Err(err) => {
22 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
23 web::Json(ApiResult::error(5010, &err.to_string()));
24 Ok(HttpResponse::Ok().json(ret))
25 }
26 }
27}
28
29#[post("/api/v1/holiday/update")]
30async fn holiday_update(req: web::Json<ChimesHolidayInfo>) -> Result<HttpResponse> {
31 let rb = get_rbatis();
32 let val = req.to_owned();
33 let mut tval = if val.id.is_none() {
34 if val.holiday_date.is_none() {
35 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
36 web::Json(ApiResult::error(5010, &"holiday_date is null".to_string()));
37 return Ok(HttpResponse::Ok().json(ret));
38 } else {
39 match val.find_holiday_info(rb).await {
40 Ok(ts) => {
41 if ts.is_none() {
42 val.clone()
43 } else {
44 let mut xts = ts.unwrap();
45 xts.date_type = val.date_type;
46 xts.remark = val.remark.clone();
47 xts
48 }
49 }
50 Err(err) => {
51 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
52 web::Json(ApiResult::error(5010, &err.to_string()));
53 return Ok(HttpResponse::Ok().json(ret));
54 }
55 }
56 }
57 } else {
58 val.clone()
59 };
60 if tval.create_date.is_none() {
61 tval.create_date = Some(DateTimeNative::now());
62 }
63
64 tval.update_date = Some(DateTimeNative::now());
65
66 if tval.id.is_none() {
67 match tval.save(rb).await {
68 Ok(_st) => {
69 let ret: web::Json<ApiResult<ChimesHolidayInfo>> = web::Json(ApiResult::ok(val));
70 Ok(HttpResponse::Ok().json(ret))
71 }
72 Err(err) => {
73 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
74 web::Json(ApiResult::error(5010, &err.to_string()));
75 Ok(HttpResponse::Ok().json(ret))
76 }
77 }
78 } else {
79 match tval.update_selective(rb).await {
80 Ok(_st) => {
81 let ret: web::Json<ApiResult<ChimesHolidayInfo>> = web::Json(ApiResult::ok(val));
82 Ok(HttpResponse::Ok().json(ret))
83 }
84 Err(err) => {
85 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
86 web::Json(ApiResult::error(5010, &err.to_string()));
87 Ok(HttpResponse::Ok().json(ret))
88 }
89 }
90 }
91}
92
93#[post("/api/v1/holiday/delete")]
94pub async fn holiday_delete(req: web::Json<ChimesHolidayInfo>) -> Result<HttpResponse> {
95 let rb = get_rbatis();
96 let mut val = req.to_owned();
97 match val.remove(rb).await {
98 Ok(_st) => {
99 let ret: web::Json<ApiResult<ChimesHolidayInfo>> = web::Json(ApiResult::ok(val));
100 Ok(HttpResponse::Ok().json(ret))
101 }
102 Err(err) => {
103 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
104 web::Json(ApiResult::error(5010, &err.to_string()));
105 Ok(HttpResponse::Ok().json(ret))
106 }
107 }
108}
109
110#[post("/api/v1/holiday/delete_ids")]
111pub async fn holiday_delete_ids(req: web::Json<Vec<i64>>) -> Result<HttpResponse> {
112 let rb = get_rbatis();
113 let ids = req.as_slice();
114 match ChimesHolidayInfo::remove_ids(rb, ids).await {
115 Ok(st) => {
116 let ret: web::Json<ApiResult<u64>> = web::Json(ApiResult::ok(st));
117 Ok(HttpResponse::Ok().json(ret))
118 }
119 Err(err) => {
120 let ret: web::Json<ApiResult<u64>> =
121 web::Json(ApiResult::error(5010, &err.to_string()));
122 Ok(HttpResponse::Ok().json(ret))
123 }
124 }
125}
126
127#[post("/api/v1/holiday/delete_physical_year")]
128pub async fn holiday_delete_phy_year(req: web::Json<i64>) -> Result<HttpResponse> {
129 let rb = get_rbatis();
130 let fy = req.to_owned();
131 match ChimesHolidayInfo::remove_physical_year(rb, fy).await {
132 Ok(st) => {
133 let ret: web::Json<ApiResult<u64>> = web::Json(ApiResult::ok(st));
134 Ok(HttpResponse::Ok().json(ret))
135 }
136 Err(err) => {
137 let ret: web::Json<ApiResult<u64>> =
138 web::Json(ApiResult::error(5010, &err.to_string()));
139 Ok(HttpResponse::Ok().json(ret))
140 }
141 }
142}
143
144#[post("/api/v1/holiday/search")]
145pub async fn holiday_search(req: web::Json<ChimesHolidayInfo>) -> Result<HttpResponse> {
146 let rb = get_rbatis();
147 let val = req.to_owned();
148 match val.query_list(rb).await {
149 Ok(st) => {
150 let ret: web::Json<ApiResult<Vec<ChimesHolidayInfo>>> = web::Json(ApiResult::ok(st));
151 Ok(HttpResponse::Ok().json(ret))
152 }
153 Err(err) => {
154 let ret: web::Json<ApiResult<Vec<ChimesHolidayInfo>>> =
155 web::Json(ApiResult::error(5010, &err.to_string()));
156 Ok(HttpResponse::Ok().json(ret))
157 }
158 }
159}
160
161#[post("/api/v1/holiday/paged/{current}/{size}")]
162pub async fn holiday_paged(
163 req: web::Json<ChimesHolidayInfo>,
164 path_param: web::Path<(u64, u64)>,
165) -> Result<HttpResponse> {
166 let rb = get_rbatis();
167 let val = req.to_owned();
168 let (current, size) = path_param.into_inner();
169 match val.query_paged(rb, current, size).await {
170 Ok(st) => {
171 let ret: web::Json<ApiResult<Page<ChimesHolidayInfo>>> = web::Json(ApiResult::ok(st));
172 Ok(HttpResponse::Ok().json(ret))
173 }
174 Err(err) => {
175 let ret: web::Json<ApiResult<Page<ChimesHolidayInfo>>> =
176 web::Json(ApiResult::error(5010, &err.to_string()));
177 Ok(HttpResponse::Ok().json(ret))
178 }
179 }
180}
181
182#[get("/api/v1/holiday/get/{id}")]
183pub async fn holiday_get(dept_id_req: web::Path<i64>) -> Result<HttpResponse> {
184 let rb = get_rbatis();
185 let dept_id = dept_id_req.to_owned();
186 match ChimesHolidayInfo::from_id(rb, &dept_id).await {
187 Ok(st) => match st {
188 Some(tv) => {
189 let ret: web::Json<ApiResult<ChimesHolidayInfo>> = web::Json(ApiResult::ok(tv));
190 Ok(HttpResponse::Ok().json(ret))
191 }
192 None => {
193 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
194 web::Json(ApiResult::error(5040, &"Not-Found".to_string()));
195 Ok(HttpResponse::Ok().json(ret))
196 }
197 },
198 Err(err) => {
199 let ret: web::Json<ApiResult<ChimesHolidayInfo>> =
200 web::Json(ApiResult::error(5010, &err.to_string()));
201 Ok(HttpResponse::Ok().json(ret))
202 }
203 }
204}