artcoded_api/models/
timesheet.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct Timesheet {
16 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
17 pub id: Option<String>,
18 #[serde(rename = "dateCreation", skip_serializing_if = "Option::is_none")]
19 pub date_creation: Option<String>,
20 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
21 pub name: Option<String>,
22 #[serde(rename = "periods", skip_serializing_if = "Option::is_none")]
23 pub periods: Option<Vec<models::TimesheetPeriod>>,
24 #[serde(rename = "closed", skip_serializing_if = "Option::is_none")]
25 pub closed: Option<bool>,
26 #[serde(rename = "uploadId", skip_serializing_if = "Option::is_none")]
27 pub upload_id: Option<String>,
28 #[serde(rename = "invoiceId", skip_serializing_if = "Option::is_none")]
29 pub invoice_id: Option<String>,
30 #[serde(rename = "clientId", skip_serializing_if = "Option::is_none")]
31 pub client_id: Option<String>,
32 #[serde(rename = "clientName", skip_serializing_if = "Option::is_none")]
33 pub client_name: Option<String>,
34 #[serde(rename = "settings", skip_serializing_if = "Option::is_none")]
35 pub settings: Option<Box<models::TimesheetSettings>>,
36 #[serde(rename = "yearMonth", skip_serializing_if = "Option::is_none")]
37 pub year_month: Option<String>,
38 #[serde(rename = "year", skip_serializing_if = "Option::is_none")]
39 pub year: Option<i32>,
40 #[serde(rename = "month", skip_serializing_if = "Option::is_none")]
41 pub month: Option<i32>,
42 #[serde(
43 rename = "numberOfWorkingHours",
44 skip_serializing_if = "Option::is_none"
45 )]
46 pub number_of_working_hours: Option<f64>,
47 #[serde(rename = "clientNameOrNA", skip_serializing_if = "Option::is_none")]
48 pub client_name_or_na: Option<String>,
49 #[serde(rename = "monthEnum", skip_serializing_if = "Option::is_none")]
50 pub month_enum: Option<MonthEnum>,
51 #[serde(
52 rename = "numberOfWorkingDays",
53 skip_serializing_if = "Option::is_none"
54 )]
55 pub number_of_working_days: Option<i64>,
56 #[serde(
57 rename = "numberOfHoursWorked",
58 skip_serializing_if = "Option::is_none"
59 )]
60 pub number_of_hours_worked: Option<String>,
61 #[serde(
62 rename = "numberOfMinutesWorked",
63 skip_serializing_if = "Option::is_none"
64 )]
65 pub number_of_minutes_worked: Option<i64>,
66}
67
68impl Timesheet {
69 pub fn new() -> Timesheet {
70 Timesheet {
71 id: None,
72 date_creation: None,
73 name: None,
74 periods: None,
75 closed: None,
76 upload_id: None,
77 invoice_id: None,
78 client_id: None,
79 client_name: None,
80 settings: None,
81 year_month: None,
82 year: None,
83 month: None,
84 number_of_working_hours: None,
85 client_name_or_na: None,
86 month_enum: None,
87 number_of_working_days: None,
88 number_of_hours_worked: None,
89 number_of_minutes_worked: None,
90 }
91 }
92}
93#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
95pub enum MonthEnum {
96 #[serde(rename = "JANUARY")]
97 January,
98 #[serde(rename = "FEBRUARY")]
99 February,
100 #[serde(rename = "MARCH")]
101 March,
102 #[serde(rename = "APRIL")]
103 April,
104 #[serde(rename = "MAY")]
105 May,
106 #[serde(rename = "JUNE")]
107 June,
108 #[serde(rename = "JULY")]
109 July,
110 #[serde(rename = "AUGUST")]
111 August,
112 #[serde(rename = "SEPTEMBER")]
113 September,
114 #[serde(rename = "OCTOBER")]
115 October,
116 #[serde(rename = "NOVEMBER")]
117 November,
118 #[serde(rename = "DECEMBER")]
119 December,
120}
121
122impl Default for MonthEnum {
123 fn default() -> MonthEnum {
124 Self::January
125 }
126}