use reqwest::Method;
use serde_json::json;
use crate::core::{
api_resp::BaseResponse, config::Config, constants::AccessTokenType, http::Transport,
req_option::RequestOption, SDKResult,
};
use super::models::{
BatchCreateTempUserDailyShiftRequest, BatchCreateTempUserDailyShiftRespData,
BatchCreateUserDailyShiftRequest, BatchCreateUserDailyShiftRespData,
QueryUserDailyShiftRequest, QueryUserDailyShiftRespData,
};
pub struct UserDailyShiftService {
pub config: Config,
}
impl UserDailyShiftService {
pub async fn batch_create(
&self,
request: BatchCreateUserDailyShiftRequest,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<BatchCreateUserDailyShiftRespData>> {
let mut api_req = request.api_req;
api_req.http_method = Method::POST;
api_req.api_path = "/open-apis/attendance/v1/user_daily_shifts/batch_create".to_string();
api_req.supported_access_token_types = vec![AccessTokenType::Tenant];
api_req
.query_params
.insert("employee_type".to_string(), request.employee_type);
let body = json!({
"user_daily_shifts": request.user_daily_shifts
});
api_req.body = serde_json::to_vec(&body)?;
let api_resp = Transport::request(api_req, &self.config, option).await?;
Ok(api_resp)
}
pub async fn query(
&self,
request: QueryUserDailyShiftRequest,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<QueryUserDailyShiftRespData>> {
let mut api_req = request.api_req;
api_req.http_method = Method::POST;
api_req.api_path = "/open-apis/attendance/v1/user_daily_shifts/query".to_string();
api_req.supported_access_token_types = vec![AccessTokenType::Tenant];
api_req
.query_params
.insert("employee_type".to_string(), request.employee_type);
let body = json!({
"user_ids": request.user_ids,
"check_date_from": request.check_date_from,
"check_date_to": request.check_date_to
});
api_req.body = serde_json::to_vec(&body)?;
let api_resp = Transport::request(api_req, &self.config, option).await?;
Ok(api_resp)
}
pub async fn batch_create_temp(
&self,
request: BatchCreateTempUserDailyShiftRequest,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<BatchCreateTempUserDailyShiftRespData>> {
let mut api_req = request.api_req;
api_req.http_method = Method::POST;
api_req.api_path =
"/open-apis/attendance/v1/user_daily_shifts/batch_create_temp".to_string();
api_req.supported_access_token_types = vec![AccessTokenType::Tenant];
api_req
.query_params
.insert("employee_type".to_string(), request.employee_type);
let body = json!({
"user_daily_shifts": request.user_daily_shifts
});
api_req.body = serde_json::to_vec(&body)?;
let api_resp = Transport::request(api_req, &self.config, option).await?;
Ok(api_resp)
}
}