/* Options: Date: 2026-09-30 14:20:31 Version: 10.20 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://uat-api-vehicle-mgt-mb-dhc.rapp-customers.co.uk //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: DashboardReportRequest.* //ExcludeTypes: //DefaultImports: serde::{Deserialize, Serialize},serde_json::Value,std::collections::HashMap */ #![allow( dead_code, non_camel_case_types, non_snake_case, clippy::upper_case_acronyms )] use serde::{Deserialize, Serialize}; use serde_json::Value; use servicestack::*; use std::collections::HashMap; #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] pub enum ReportFilterType { #[default] #[serde(rename = "list")] list, #[serde(rename = "list_like")] list_like, #[serde(rename = "date")] date, #[serde(rename = "range")] range, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct ReportFilter { pub r#type: ReportFilterType, pub values: Vec, #[serde(default, skip_serializing_if = "Option::is_none")] pub start: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub end: Option, #[serde(rename = "higherThan")] #[serde(default, skip_serializing_if = "Option::is_none")] pub higher_than: Option, #[serde(rename = "lowerThan")] #[serde(default, skip_serializing_if = "Option::is_none")] pub lower_than: Option, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct ReportsPaging { pub page: i32, #[serde(rename = "pageSize")] pub page_size: i32, } #[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)] pub enum ReportSortType { #[default] #[serde(rename = "asc")] asc, #[serde(rename = "desc")] desc, } #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct DashboardReportResult { #[serde(rename = "totalCount")] pub total_count: i32, #[serde(rename = "reportResult")] pub report_result: Vec, } // Route("/v1/reports", "POST") #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)] #[serde(default)] pub struct DashboardReportRequest { /// Report Name // ApiMember(Description="Report Name", IsRequired=true, ParameterType="body") #[serde(rename = "reportName")] pub report_name: String, /// Filters // ApiMember(Description="Filters", IsRequired=true, ParameterType="body") pub filters: HashMap, /// Paging // ApiMember(Description="Paging", ParameterType="body") pub paging: ReportsPaging, /// Sorting // ApiMember(Description="Sorting", ParameterType="body") pub sorting: HashMap, } impl IRequest for DashboardReportRequest { const NAME: &'static str = "DashboardReportRequest"; const VERB: &'static str = "POST"; } impl IReturn for DashboardReportRequest { type Response = DashboardReportResult; }