use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TimesheetPeriod {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "shortDescription", skip_serializing_if = "Option::is_none")]
pub short_description: Option<String>,
#[serde(rename = "date", skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(rename = "morningStartTime", skip_serializing_if = "Option::is_none")]
pub morning_start_time: Option<String>,
#[serde(rename = "morningEndTime", skip_serializing_if = "Option::is_none")]
pub morning_end_time: Option<String>,
#[serde(rename = "afternoonStartTime", skip_serializing_if = "Option::is_none")]
pub afternoon_start_time: Option<String>,
#[serde(rename = "afternoonEndTime", skip_serializing_if = "Option::is_none")]
pub afternoon_end_time: Option<String>,
#[serde(rename = "projectName", skip_serializing_if = "Option::is_none")]
pub project_name: Option<String>,
#[serde(rename = "periodType", skip_serializing_if = "Option::is_none")]
pub period_type: Option<PeriodType>,
#[serde(rename = "duration", skip_serializing_if = "Option::is_none")]
pub duration: Option<i64>,
#[serde(rename = "dayOfWeek", skip_serializing_if = "Option::is_none")]
pub day_of_week: Option<DayOfWeek>,
#[serde(rename = "rowFilled", skip_serializing_if = "Option::is_none")]
pub row_filled: Option<bool>,
#[serde(rename = "durationInHours", skip_serializing_if = "Option::is_none")]
pub duration_in_hours: Option<String>,
}
impl TimesheetPeriod {
pub fn new() -> TimesheetPeriod {
TimesheetPeriod {
id: None,
short_description: None,
date: None,
morning_start_time: None,
morning_end_time: None,
afternoon_start_time: None,
afternoon_end_time: None,
project_name: None,
period_type: None,
duration: None,
day_of_week: None,
row_filled: None,
duration_in_hours: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PeriodType {
#[serde(rename = "SICKNESS")]
Sickness,
#[serde(rename = "PUBLIC_HOLIDAYS")]
PublicHolidays,
#[serde(rename = "AUTHORIZED_HOLIDAYS")]
AuthorizedHolidays,
#[serde(rename = "WORKING_DAY")]
WorkingDay,
#[serde(rename = "WEEKEND")]
Weekend,
}
impl Default for PeriodType {
fn default() -> PeriodType {
Self::Sickness
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum DayOfWeek {
#[serde(rename = "MONDAY")]
Monday,
#[serde(rename = "TUESDAY")]
Tuesday,
#[serde(rename = "WEDNESDAY")]
Wednesday,
#[serde(rename = "THURSDAY")]
Thursday,
#[serde(rename = "FRIDAY")]
Friday,
#[serde(rename = "SATURDAY")]
Saturday,
#[serde(rename = "SUNDAY")]
Sunday,
}
impl Default for DayOfWeek {
fn default() -> DayOfWeek {
Self::Monday
}
}