use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Container {
#[serde(rename = "containerType")]
pub container_type: ContainerType,
#[serde(rename = "containerIdentifier")]
pub container_identifier: String,
#[serde(rename = "trackingNumber", skip_serializing_if = "Option::is_none")]
pub tracking_number: Option<String>,
#[serde(rename = "manifestId", skip_serializing_if = "Option::is_none")]
pub manifest_id: Option<String>,
#[serde(rename = "manifestDate", skip_serializing_if = "Option::is_none")]
pub manifest_date: Option<String>,
#[serde(rename = "shipMethod", skip_serializing_if = "Option::is_none")]
pub ship_method: Option<String>,
#[serde(rename = "scacCode", skip_serializing_if = "Option::is_none")]
pub scac_code: Option<String>,
#[serde(rename = "carrier", skip_serializing_if = "Option::is_none")]
pub carrier: Option<String>,
#[serde(rename = "containerSequenceNumber", skip_serializing_if = "Option::is_none")]
pub container_sequence_number: Option<i32>,
#[serde(rename = "dimensions", skip_serializing_if = "Option::is_none")]
pub dimensions: Option<Box<models::vendor_direct_fulfillment_shipping_v1::Dimensions>>,
#[serde(rename = "weight")]
pub weight: Box<models::vendor_direct_fulfillment_shipping_v1::Weight>,
#[serde(rename = "packedItems")]
pub packed_items: Vec<models::vendor_direct_fulfillment_shipping_v1::PackedItem>,
}
impl Container {
pub fn new(container_type: ContainerType, container_identifier: String, weight: models::vendor_direct_fulfillment_shipping_v1::Weight, packed_items: Vec<models::vendor_direct_fulfillment_shipping_v1::PackedItem>) -> Container {
Container {
container_type,
container_identifier,
tracking_number: None,
manifest_id: None,
manifest_date: None,
ship_method: None,
scac_code: None,
carrier: None,
container_sequence_number: None,
dimensions: None,
weight: Box::new(weight),
packed_items,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ContainerType {
#[serde(rename = "carton")]
Carton,
#[serde(rename = "pallet")]
Pallet,
}
impl Default for ContainerType {
fn default() -> ContainerType {
Self::Carton
}
}