use crate::{ParamsChecker, ValidateType};
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize, Default)]
pub struct ParamsCdrObQuery {
#[serde(rename = "validateType")]
pub validate_type: ValidateType,
#[serde(rename = "departmentId", skip_serializing_if = "Option::is_none")]
pub department_id: Option<String>,
#[serde(rename = "enterpriseId", skip_serializing_if = "Option::is_none")]
pub enterprise_id: Option<String>,
#[serde(rename = "timestamp")]
pub timestamp: u64,
pub sign: String,
#[serde(rename = "uniqueId", skip_serializing_if = "Option::is_none")]
pub unique_id: Option<String>,
#[serde(rename = "requestUniqueId", skip_serializing_if = "Option::is_none")]
pub request_unique_id: Option<String>,
#[serde(rename = "callType", skip_serializing_if = "Option::is_none")]
pub call_type: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub province: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub city: Option<String>,
#[serde(rename = "timeRangeType", skip_serializing_if = "Option::is_none")]
pub time_range_type: Option<i32>,
#[serde(rename = "startTime", skip_serializing_if = "Option::is_none")]
pub start_time: Option<i64>,
#[serde(rename = "endTime", skip_serializing_if = "Option::is_none")]
pub end_time: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub start: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u64>,
#[serde(rename = "userFieldkey", skip_serializing_if = "Option::is_none")]
pub user_fieldkey: Option<String>,
#[serde(rename = "userFieldValue", skip_serializing_if = "Option::is_none")]
pub user_field_value: Option<String>,
#[serde(rename = "customerNumber", skip_serializing_if = "Option::is_none")]
pub customer_number: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cno: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gno: Option<String>,
#[serde(rename = "agentNumber", skip_serializing_if = "Option::is_none")]
pub agent_number: Option<String>,
#[serde(rename = "agentName", skip_serializing_if = "Option::is_none")]
pub agent_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub order: Option<i32>,
#[serde(rename = "returnCount", skip_serializing_if = "Option::is_none")]
pub return_count: Option<i32>,
}
impl ParamsChecker for ParamsCdrObQuery {
fn check(&self) -> crate::Result<()> {
use crate::Error;
use ValidateType::*;
match self.validate_type {
Department => {
if self.department_id.is_none() {
return Err(Error::General("部门编号(departmentId)未设置".to_string()));
}
}
Enterprise => {
if self.enterprise_id.is_none() {
return Err(Error::General(
"呼叫中心编号(enterpriseId)未设置".to_string(),
));
}
}
};
Ok(())
}
}