use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Fulfillment {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "status")]
pub status: models::FulfillmentStatus,
#[serde(rename = "bookingRef")]
pub booking_ref: String,
#[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub summary: Option<Option<String>>,
#[serde(rename = "createdOn")]
pub created_on: String,
#[serde(rename = "controlNumber", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub control_number: Option<Option<String>>,
#[serde(rename = "bookingParts", skip_serializing_if = "Option::is_none")]
pub booking_parts: Option<Vec<models::BookingPartReference>>,
#[serde(rename = "availableUsage", skip_serializing_if = "Option::is_none")]
pub available_usage: Option<Box<models::FulfillmentUsage>>,
#[serde(rename = "issuer", skip_serializing_if = "Option::is_none")]
pub issuer: Option<String>,
#[serde(rename = "fulfillmentDocuments", skip_serializing_if = "Option::is_none")]
pub fulfillment_documents: Option<Vec<models::FulfillmentDocument>>,
#[serde(rename = "issuingLanguage", skip_serializing_if = "Option::is_none")]
pub issuing_language: Option<String>,
#[serde(rename = "fulfillmentParts", skip_serializing_if = "Option::is_none")]
pub fulfillment_parts: Option<Vec<models::FulfillmentPart>>,
#[serde(rename = "contentComplete", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub content_complete: Option<Option<bool>>,
#[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
pub trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
#[serde(rename = "continuousServiceUsage", skip_serializing_if = "Option::is_none")]
pub continuous_service_usage: Option<Box<models::ContinuousServiceUsage>>,
#[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
pub _links: Option<Vec<models::Link>>,
}
impl Fulfillment {
pub fn new(id: String, status: models::FulfillmentStatus, booking_ref: String, created_on: String) -> Fulfillment {
Fulfillment {
id,
status,
booking_ref,
summary: None,
created_on,
control_number: None,
booking_parts: None,
available_usage: None,
issuer: None,
fulfillment_documents: None,
issuing_language: None,
fulfillment_parts: None,
content_complete: None,
trip_coverage: None,
inbound_trip_coverage: None,
continuous_service_usage: None,
_links: None,
}
}
}