use crate::manager::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum DeliveryOrCalendarPatternQualifier {
#[serde(rename = "1st Week of the Month")]
Variant1stWeekOfTheMonth,
#[serde(rename = "2nd Week of the Month")]
Variant2ndWeekOfTheMonth,
#[serde(rename = "3rd Week of the Month")]
Variant3rdWeekOfTheMonth,
#[serde(rename = "4th Week of the Month")]
Variant4thWeekOfTheMonth,
#[serde(rename = "5th Week of the Month")]
Variant5thWeekOfTheMonth,
#[serde(rename = "1st & 3rd Week of the Month")]
Variant1stAmpersand3rdWeekOfTheMonth,
#[serde(rename = "2nd & 4th Week of the Month")]
Variant2ndAmpersand4thWeekOfTheMonth,
#[serde(rename = "1st Working Day of Period")]
Variant1stWorkingDayOfPeriod,
#[serde(rename = "Last Working Day of Period")]
LastWorkingDayOfPeriod,
#[serde(rename = "Monday through Friday")]
MondayThroughFriday,
#[serde(rename = "Monday through Saturday")]
MondayThroughSaturday,
#[serde(rename = "Monday through Sunday")]
MondayThroughSunday,
#[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,
#[serde(rename = "Monday through Thursday")]
MondayThroughThursday,
#[serde(rename = "Immediately")]
Immediately,
#[serde(rename = "As Directed")]
AsDirected,
#[serde(rename = "Daily Mon. Through Fri.")]
DailyMonThroughFri,
#[serde(rename = "1/2 Mon. & 1/2 Tues.")]
Variant1Slash2MonAmpersand1Slash2Tues,
#[serde(rename = "1/2 Tues. & 1/2 Thurs.")]
Variant1Slash2TuesAmpersand1Slash2Thurs,
#[serde(rename = "1/2 Wed. & 1/2 Fri.")]
Variant1Slash2WedAmpersand1Slash2Fri,
#[serde(rename = "Once Anytime Mon. through Fri.")]
OnceAnytimeMonThroughFri,
#[serde(rename = "Tuesday through Friday")]
TuesdayThroughFriday,
#[serde(rename = "Monday, Tuesday and Thursday")]
MondayCommaTuesdayAndThursday,
#[serde(rename = "Monday, Tuesday and Friday")]
MondayCommaTuesdayAndFriday,
#[serde(rename = "Wednesday and Thursday")]
WednesdayAndThursday,
#[serde(rename = "Monday, Wednesday and Thursday")]
MondayCommaWednesdayAndThursday,
#[serde(rename = "Tuesday, Thursday and Friday")]
TuesdayCommaThursdayAndFriday,
#[serde(rename = "1/2 Tues. & 1/2 Fri.")]
Variant1Slash2TuesAmpersand1Slash2Fri,
#[serde(rename = "1/2 Mon. & 1/2 Wed.")]
Variant1Slash2MonAmpersand1Slash2Wed,
#[serde(rename = "1/3 Mon., 1/3 Wed., 1/3 Fri.")]
Variant1Slash3MonComma1Slash3WedComma1Slash3Fri,
#[serde(rename = "Whenever Necessary")]
WheneverNecessary,
#[serde(rename = "1/2 By Wed. Bal. By Fri.")]
Variant1Slash2ByWedBalByFri,
#[serde(rename = "None (Also Used to Cancel or Override a Previous Pattern)")]
NoneLeftParenthesisAlsoUsedToCancelOrOverrideAPreviousPatternRightParenthesis,
#[serde(untagged)]
UnknownValue(String),
}
impl std::fmt::Display for DeliveryOrCalendarPatternQualifier {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::Variant1stWeekOfTheMonth => write!(f, "1st Week of the Month"),
Self::Variant2ndWeekOfTheMonth => write!(f, "2nd Week of the Month"),
Self::Variant3rdWeekOfTheMonth => write!(f, "3rd Week of the Month"),
Self::Variant4thWeekOfTheMonth => write!(f, "4th Week of the Month"),
Self::Variant5thWeekOfTheMonth => write!(f, "5th Week of the Month"),
Self::Variant1stAmpersand3rdWeekOfTheMonth => write!(f, "1st & 3rd Week of the Month"),
Self::Variant2ndAmpersand4thWeekOfTheMonth => write!(f, "2nd & 4th Week of the Month"),
Self::Variant1stWorkingDayOfPeriod => write!(f, "1st Working Day of Period"),
Self::LastWorkingDayOfPeriod => write!(f, "Last Working Day of Period"),
Self::MondayThroughFriday => write!(f, "Monday through Friday"),
Self::MondayThroughSaturday => write!(f, "Monday through Saturday"),
Self::MondayThroughSunday => write!(f, "Monday through Sunday"),
Self::Monday => write!(f, "Monday"),
Self::Tuesday => write!(f, "Tuesday"),
Self::Wednesday => write!(f, "Wednesday"),
Self::Thursday => write!(f, "Thursday"),
Self::Friday => write!(f, "Friday"),
Self::Saturday => write!(f, "Saturday"),
Self::Sunday => write!(f, "Sunday"),
Self::MondayThroughThursday => write!(f, "Monday through Thursday"),
Self::Immediately => write!(f, "Immediately"),
Self::AsDirected => write!(f, "As Directed"),
Self::DailyMonThroughFri => write!(f, "Daily Mon. Through Fri."),
Self::Variant1Slash2MonAmpersand1Slash2Tues => write!(f, "1/2 Mon. & 1/2 Tues."),
Self::Variant1Slash2TuesAmpersand1Slash2Thurs => write!(f, "1/2 Tues. & 1/2 Thurs."),
Self::Variant1Slash2WedAmpersand1Slash2Fri => write!(f, "1/2 Wed. & 1/2 Fri."),
Self::OnceAnytimeMonThroughFri => write!(f, "Once Anytime Mon. through Fri."),
Self::TuesdayThroughFriday => write!(f, "Tuesday through Friday"),
Self::MondayCommaTuesdayAndThursday => write!(f, "Monday, Tuesday and Thursday"),
Self::MondayCommaTuesdayAndFriday => write!(f, "Monday, Tuesday and Friday"),
Self::WednesdayAndThursday => write!(f, "Wednesday and Thursday"),
Self::MondayCommaWednesdayAndThursday => write!(f, "Monday, Wednesday and Thursday"),
Self::TuesdayCommaThursdayAndFriday => write!(f, "Tuesday, Thursday and Friday"),
Self::Variant1Slash2TuesAmpersand1Slash2Fri => write!(f, "1/2 Tues. & 1/2 Fri."),
Self::Variant1Slash2MonAmpersand1Slash2Wed => write!(f, "1/2 Mon. & 1/2 Wed."),
Self::Variant1Slash3MonComma1Slash3WedComma1Slash3Fri => write!(f, "1/3 Mon., 1/3 Wed., 1/3 Fri."),
Self::WheneverNecessary => write!(f, "Whenever Necessary"),
Self::Variant1Slash2ByWedBalByFri => write!(f, "1/2 By Wed. Bal. By Fri."),
Self::NoneLeftParenthesisAlsoUsedToCancelOrOverrideAPreviousPatternRightParenthesis => write!(f, "None (Also Used to Cancel or Override a Previous Pattern)"),
Self::UnknownValue(s) => write!(f, "{s}"),
}
}
}
impl Default for DeliveryOrCalendarPatternQualifier {
fn default() -> DeliveryOrCalendarPatternQualifier {
Self::Variant1stWeekOfTheMonth
}
}