chimes_rust/handler/
chimes_holiday.rs

1/**
2 * Generate the file for chimes_dept_info.rs,
3 */
4use 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}