use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum ReasonActiveOrDisabled {
AgentDisabled,
ClientDisabled,
ConciergeNotification,
FinalIgnoredWarning,
Ignored,
InitialIgnoredWarning,
Invalid,
NoListingsFound,
NoListingsFoundWarning,
NoOneToSendTo,
OverLimit,
ReActivated,
Revised,
SearchFailing,
WelcomeEmailIgnored,
WelcomeEmailIgnoredWarning,
OpenEnumeration(String),
}
impl crate::ResoEnumeration for ReasonActiveOrDisabled {
fn from_str(s: &str) -> ReasonActiveOrDisabled {
match s {
"Agent Disabled" => ReasonActiveOrDisabled::AgentDisabled,
"Client Disabled" => ReasonActiveOrDisabled::ClientDisabled,
"Concierge Notification" => ReasonActiveOrDisabled::ConciergeNotification,
"Final Ignored Warning" => ReasonActiveOrDisabled::FinalIgnoredWarning,
"Ignored" => ReasonActiveOrDisabled::Ignored,
"Initial Ignored Warning" => ReasonActiveOrDisabled::InitialIgnoredWarning,
"Invalid" => ReasonActiveOrDisabled::Invalid,
"No Listings Found" => ReasonActiveOrDisabled::NoListingsFound,
"No Listings Found Warning" => ReasonActiveOrDisabled::NoListingsFoundWarning,
"No One To Send To" => ReasonActiveOrDisabled::NoOneToSendTo,
"Over Limit" => ReasonActiveOrDisabled::OverLimit,
"Re-Activated" => ReasonActiveOrDisabled::ReActivated,
"Revised" => ReasonActiveOrDisabled::Revised,
"Search Failing" => ReasonActiveOrDisabled::SearchFailing,
"Welcome Email Ignored" => ReasonActiveOrDisabled::WelcomeEmailIgnored,
"Welcome Email Ignored Warning" => ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning,
_ => ReasonActiveOrDisabled::OpenEnumeration(s.into()),
}
}
fn from_string(s: String) -> ReasonActiveOrDisabled {
match s.as_ref() {
"Agent Disabled" => ReasonActiveOrDisabled::AgentDisabled,
"Client Disabled" => ReasonActiveOrDisabled::ClientDisabled,
"Concierge Notification" => ReasonActiveOrDisabled::ConciergeNotification,
"Final Ignored Warning" => ReasonActiveOrDisabled::FinalIgnoredWarning,
"Ignored" => ReasonActiveOrDisabled::Ignored,
"Initial Ignored Warning" => ReasonActiveOrDisabled::InitialIgnoredWarning,
"Invalid" => ReasonActiveOrDisabled::Invalid,
"No Listings Found" => ReasonActiveOrDisabled::NoListingsFound,
"No Listings Found Warning" => ReasonActiveOrDisabled::NoListingsFoundWarning,
"No One To Send To" => ReasonActiveOrDisabled::NoOneToSendTo,
"Over Limit" => ReasonActiveOrDisabled::OverLimit,
"Re-Activated" => ReasonActiveOrDisabled::ReActivated,
"Revised" => ReasonActiveOrDisabled::Revised,
"Search Failing" => ReasonActiveOrDisabled::SearchFailing,
"Welcome Email Ignored" => ReasonActiveOrDisabled::WelcomeEmailIgnored,
"Welcome Email Ignored Warning" => ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning,
_ => ReasonActiveOrDisabled::OpenEnumeration(s),
}
}
fn to_str(&self) -> &str {
match self {
ReasonActiveOrDisabled::AgentDisabled => "Agent Disabled",
ReasonActiveOrDisabled::ClientDisabled => "Client Disabled",
ReasonActiveOrDisabled::ConciergeNotification => "Concierge Notification",
ReasonActiveOrDisabled::FinalIgnoredWarning => "Final Ignored Warning",
ReasonActiveOrDisabled::Ignored => "Ignored",
ReasonActiveOrDisabled::InitialIgnoredWarning => "Initial Ignored Warning",
ReasonActiveOrDisabled::Invalid => "Invalid",
ReasonActiveOrDisabled::NoListingsFound => "No Listings Found",
ReasonActiveOrDisabled::NoListingsFoundWarning => "No Listings Found Warning",
ReasonActiveOrDisabled::NoOneToSendTo => "No One To Send To",
ReasonActiveOrDisabled::OverLimit => "Over Limit",
ReasonActiveOrDisabled::ReActivated => "Re-Activated",
ReasonActiveOrDisabled::Revised => "Revised",
ReasonActiveOrDisabled::SearchFailing => "Search Failing",
ReasonActiveOrDisabled::WelcomeEmailIgnored => "Welcome Email Ignored",
ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning => "Welcome Email Ignored Warning",
ReasonActiveOrDisabled::OpenEnumeration(ref s) => s,
}
}
fn into_string(self) -> String {
match self {
ReasonActiveOrDisabled::AgentDisabled => "Agent Disabled".into(),
ReasonActiveOrDisabled::ClientDisabled => "Client Disabled".into(),
ReasonActiveOrDisabled::ConciergeNotification => "Concierge Notification".into(),
ReasonActiveOrDisabled::FinalIgnoredWarning => "Final Ignored Warning".into(),
ReasonActiveOrDisabled::Ignored => "Ignored".into(),
ReasonActiveOrDisabled::InitialIgnoredWarning => "Initial Ignored Warning".into(),
ReasonActiveOrDisabled::Invalid => "Invalid".into(),
ReasonActiveOrDisabled::NoListingsFound => "No Listings Found".into(),
ReasonActiveOrDisabled::NoListingsFoundWarning => "No Listings Found Warning".into(),
ReasonActiveOrDisabled::NoOneToSendTo => "No One To Send To".into(),
ReasonActiveOrDisabled::OverLimit => "Over Limit".into(),
ReasonActiveOrDisabled::ReActivated => "Re-Activated".into(),
ReasonActiveOrDisabled::Revised => "Revised".into(),
ReasonActiveOrDisabled::SearchFailing => "Search Failing".into(),
ReasonActiveOrDisabled::WelcomeEmailIgnored => "Welcome Email Ignored".into(),
ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning => {
"Welcome Email Ignored Warning".into()
}
ReasonActiveOrDisabled::OpenEnumeration(s) => s,
}
}
fn fallback_value(&self) -> Option<&str> {
match self {
ReasonActiveOrDisabled::OpenEnumeration(ref s) => Some(s),
_ => None,
}
}
}
impl From<String> for ReasonActiveOrDisabled {
fn from(s: String) -> ReasonActiveOrDisabled {
match s.as_ref() {
"Agent Disabled" => ReasonActiveOrDisabled::AgentDisabled,
"Client Disabled" => ReasonActiveOrDisabled::ClientDisabled,
"Concierge Notification" => ReasonActiveOrDisabled::ConciergeNotification,
"Final Ignored Warning" => ReasonActiveOrDisabled::FinalIgnoredWarning,
"Ignored" => ReasonActiveOrDisabled::Ignored,
"Initial Ignored Warning" => ReasonActiveOrDisabled::InitialIgnoredWarning,
"Invalid" => ReasonActiveOrDisabled::Invalid,
"No Listings Found" => ReasonActiveOrDisabled::NoListingsFound,
"No Listings Found Warning" => ReasonActiveOrDisabled::NoListingsFoundWarning,
"No One To Send To" => ReasonActiveOrDisabled::NoOneToSendTo,
"Over Limit" => ReasonActiveOrDisabled::OverLimit,
"Re-Activated" => ReasonActiveOrDisabled::ReActivated,
"Revised" => ReasonActiveOrDisabled::Revised,
"Search Failing" => ReasonActiveOrDisabled::SearchFailing,
"Welcome Email Ignored" => ReasonActiveOrDisabled::WelcomeEmailIgnored,
"Welcome Email Ignored Warning" => ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning,
_ => ReasonActiveOrDisabled::OpenEnumeration(s),
}
}
}
impl From<&str> for ReasonActiveOrDisabled {
fn from(s: &str) -> ReasonActiveOrDisabled {
match s {
"Agent Disabled" => ReasonActiveOrDisabled::AgentDisabled,
"Client Disabled" => ReasonActiveOrDisabled::ClientDisabled,
"Concierge Notification" => ReasonActiveOrDisabled::ConciergeNotification,
"Final Ignored Warning" => ReasonActiveOrDisabled::FinalIgnoredWarning,
"Ignored" => ReasonActiveOrDisabled::Ignored,
"Initial Ignored Warning" => ReasonActiveOrDisabled::InitialIgnoredWarning,
"Invalid" => ReasonActiveOrDisabled::Invalid,
"No Listings Found" => ReasonActiveOrDisabled::NoListingsFound,
"No Listings Found Warning" => ReasonActiveOrDisabled::NoListingsFoundWarning,
"No One To Send To" => ReasonActiveOrDisabled::NoOneToSendTo,
"Over Limit" => ReasonActiveOrDisabled::OverLimit,
"Re-Activated" => ReasonActiveOrDisabled::ReActivated,
"Revised" => ReasonActiveOrDisabled::Revised,
"Search Failing" => ReasonActiveOrDisabled::SearchFailing,
"Welcome Email Ignored" => ReasonActiveOrDisabled::WelcomeEmailIgnored,
"Welcome Email Ignored Warning" => ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning,
_ => ReasonActiveOrDisabled::OpenEnumeration(s.into()),
}
}
}
impl<'a> From<&'a ReasonActiveOrDisabled> for &'a str {
fn from(s: &'a ReasonActiveOrDisabled) -> &'a str {
match s {
ReasonActiveOrDisabled::AgentDisabled => "Agent Disabled",
ReasonActiveOrDisabled::ClientDisabled => "Client Disabled",
ReasonActiveOrDisabled::ConciergeNotification => "Concierge Notification",
ReasonActiveOrDisabled::FinalIgnoredWarning => "Final Ignored Warning",
ReasonActiveOrDisabled::Ignored => "Ignored",
ReasonActiveOrDisabled::InitialIgnoredWarning => "Initial Ignored Warning",
ReasonActiveOrDisabled::Invalid => "Invalid",
ReasonActiveOrDisabled::NoListingsFound => "No Listings Found",
ReasonActiveOrDisabled::NoListingsFoundWarning => "No Listings Found Warning",
ReasonActiveOrDisabled::NoOneToSendTo => "No One To Send To",
ReasonActiveOrDisabled::OverLimit => "Over Limit",
ReasonActiveOrDisabled::ReActivated => "Re-Activated",
ReasonActiveOrDisabled::Revised => "Revised",
ReasonActiveOrDisabled::SearchFailing => "Search Failing",
ReasonActiveOrDisabled::WelcomeEmailIgnored => "Welcome Email Ignored",
ReasonActiveOrDisabled::WelcomeEmailIgnoredWarning => "Welcome Email Ignored Warning",
ReasonActiveOrDisabled::OpenEnumeration(s) => s,
}
}
}
impl Serialize for ReasonActiveOrDisabled {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
serializer.serialize_str(self.into())
}
}
impl<'de> Deserialize<'de> for ReasonActiveOrDisabled {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
Ok(From::from(s))
}
}