use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Timesheet {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "dateCreation", skip_serializing_if = "Option::is_none")]
pub date_creation: Option<String>,
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "periods", skip_serializing_if = "Option::is_none")]
pub periods: Option<Vec<models::TimesheetPeriod>>,
#[serde(rename = "closed", skip_serializing_if = "Option::is_none")]
pub closed: Option<bool>,
#[serde(rename = "uploadId", skip_serializing_if = "Option::is_none")]
pub upload_id: Option<String>,
#[serde(rename = "invoiceId", skip_serializing_if = "Option::is_none")]
pub invoice_id: Option<String>,
#[serde(rename = "clientId", skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(rename = "clientName", skip_serializing_if = "Option::is_none")]
pub client_name: Option<String>,
#[serde(rename = "settings", skip_serializing_if = "Option::is_none")]
pub settings: Option<Box<models::TimesheetSettings>>,
#[serde(rename = "yearMonth", skip_serializing_if = "Option::is_none")]
pub year_month: Option<String>,
#[serde(rename = "year", skip_serializing_if = "Option::is_none")]
pub year: Option<i32>,
#[serde(rename = "month", skip_serializing_if = "Option::is_none")]
pub month: Option<i32>,
#[serde(
rename = "numberOfWorkingHours",
skip_serializing_if = "Option::is_none"
)]
pub number_of_working_hours: Option<f64>,
#[serde(rename = "clientNameOrNA", skip_serializing_if = "Option::is_none")]
pub client_name_or_na: Option<String>,
#[serde(rename = "monthEnum", skip_serializing_if = "Option::is_none")]
pub month_enum: Option<MonthEnum>,
#[serde(
rename = "numberOfWorkingDays",
skip_serializing_if = "Option::is_none"
)]
pub number_of_working_days: Option<i64>,
#[serde(
rename = "numberOfHoursWorked",
skip_serializing_if = "Option::is_none"
)]
pub number_of_hours_worked: Option<String>,
#[serde(
rename = "numberOfMinutesWorked",
skip_serializing_if = "Option::is_none"
)]
pub number_of_minutes_worked: Option<i64>,
}
impl Timesheet {
pub fn new() -> Timesheet {
Timesheet {
id: None,
date_creation: None,
name: None,
periods: None,
closed: None,
upload_id: None,
invoice_id: None,
client_id: None,
client_name: None,
settings: None,
year_month: None,
year: None,
month: None,
number_of_working_hours: None,
client_name_or_na: None,
month_enum: None,
number_of_working_days: None,
number_of_hours_worked: None,
number_of_minutes_worked: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum MonthEnum {
#[serde(rename = "JANUARY")]
January,
#[serde(rename = "FEBRUARY")]
February,
#[serde(rename = "MARCH")]
March,
#[serde(rename = "APRIL")]
April,
#[serde(rename = "MAY")]
May,
#[serde(rename = "JUNE")]
June,
#[serde(rename = "JULY")]
July,
#[serde(rename = "AUGUST")]
August,
#[serde(rename = "SEPTEMBER")]
September,
#[serde(rename = "OCTOBER")]
October,
#[serde(rename = "NOVEMBER")]
November,
#[serde(rename = "DECEMBER")]
December,
}
impl Default for MonthEnum {
fn default() -> MonthEnum {
Self::January
}
}