use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum CurrentStatus {
#[serde(rename = "IN_TRANSIT")]
InTransit,
#[serde(rename = "DELIVERED")]
Delivered,
#[serde(rename = "RETURNING")]
Returning,
#[serde(rename = "RETURNED")]
Returned,
#[serde(rename = "UNDELIVERABLE")]
Undeliverable,
#[serde(rename = "DELAYED")]
Delayed,
#[serde(rename = "AVAILABLE_FOR_PICKUP")]
AvailableForPickup,
#[serde(rename = "CUSTOMER_ACTION")]
CustomerAction,
#[serde(rename = "UNKNOWN")]
Unknown,
#[serde(rename = "OUT_FOR_DELIVERY")]
OutForDelivery,
#[serde(rename = "DELIVERY_ATTEMPTED")]
DeliveryAttempted,
#[serde(rename = "PICKUP_SUCCESSFUL")]
PickupSuccessful,
#[serde(rename = "PICKUP_CANCELLED")]
PickupCancelled,
#[serde(rename = "PICKUP_ATTEMPTED")]
PickupAttempted,
#[serde(rename = "PICKUP_SCHEDULED")]
PickupScheduled,
#[serde(rename = "RETURN_REQUEST_ACCEPTED")]
ReturnRequestAccepted,
#[serde(rename = "REFUND_ISSUED")]
RefundIssued,
#[serde(rename = "RETURN_RECEIVED_IN_FC")]
ReturnReceivedInFc,
}
impl std::fmt::Display for CurrentStatus {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match self {
Self::InTransit => write!(f, "IN_TRANSIT"),
Self::Delivered => write!(f, "DELIVERED"),
Self::Returning => write!(f, "RETURNING"),
Self::Returned => write!(f, "RETURNED"),
Self::Undeliverable => write!(f, "UNDELIVERABLE"),
Self::Delayed => write!(f, "DELAYED"),
Self::AvailableForPickup => write!(f, "AVAILABLE_FOR_PICKUP"),
Self::CustomerAction => write!(f, "CUSTOMER_ACTION"),
Self::Unknown => write!(f, "UNKNOWN"),
Self::OutForDelivery => write!(f, "OUT_FOR_DELIVERY"),
Self::DeliveryAttempted => write!(f, "DELIVERY_ATTEMPTED"),
Self::PickupSuccessful => write!(f, "PICKUP_SUCCESSFUL"),
Self::PickupCancelled => write!(f, "PICKUP_CANCELLED"),
Self::PickupAttempted => write!(f, "PICKUP_ATTEMPTED"),
Self::PickupScheduled => write!(f, "PICKUP_SCHEDULED"),
Self::ReturnRequestAccepted => write!(f, "RETURN_REQUEST_ACCEPTED"),
Self::RefundIssued => write!(f, "REFUND_ISSUED"),
Self::ReturnReceivedInFc => write!(f, "RETURN_RECEIVED_IN_FC"),
}
}
}
impl Default for CurrentStatus {
fn default() -> CurrentStatus {
Self::InTransit
}
}