osdm_sys/models/
fulfillment.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
17pub struct Fulfillment {
18 #[serde(rename = "id")]
19 pub id: String,
20 #[serde(rename = "status")]
21 pub status: models::FulfillmentStatus,
22 #[serde(rename = "bookingRef")]
24 pub booking_ref: String,
25 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
27 pub summary: Option<Option<String>>,
28 #[serde(rename = "createdOn")]
29 pub created_on: String,
30 #[serde(rename = "controlNumber", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
32 pub control_number: Option<Option<String>>,
33 #[serde(rename = "bookingParts", skip_serializing_if = "Option::is_none")]
35 pub booking_parts: Option<Vec<models::BookingPartReference>>,
36 #[serde(rename = "availableUsage", skip_serializing_if = "Option::is_none")]
37 pub available_usage: Option<Box<models::FulfillmentUsage>>,
38 #[serde(rename = "issuer", skip_serializing_if = "Option::is_none")]
40 pub issuer: Option<String>,
41 #[serde(rename = "fulfillmentDocuments", skip_serializing_if = "Option::is_none")]
43 pub fulfillment_documents: Option<Vec<models::FulfillmentDocument>>,
44 #[serde(rename = "issuingLanguage", skip_serializing_if = "Option::is_none")]
46 pub issuing_language: Option<String>,
47 #[serde(rename = "fulfillmentParts", skip_serializing_if = "Option::is_none")]
49 pub fulfillment_parts: Option<Vec<models::FulfillmentPart>>,
50 #[serde(rename = "contentComplete", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
52 pub content_complete: Option<Option<bool>>,
53 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
54 pub trip_coverage: Option<Box<models::TripCoverage>>,
55 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
56 pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
57 #[serde(rename = "continuousServiceUsage", skip_serializing_if = "Option::is_none")]
58 pub continuous_service_usage: Option<Box<models::ContinuousServiceUsage>>,
59 #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
61 pub _links: Option<Vec<models::Link>>,
62}
63
64impl Fulfillment {
65 pub fn new(id: String, status: models::FulfillmentStatus, booking_ref: String, created_on: String) -> Fulfillment {
67 Fulfillment {
68 id,
69 status,
70 booking_ref,
71 summary: None,
72 created_on,
73 control_number: None,
74 booking_parts: None,
75 available_usage: None,
76 issuer: None,
77 fulfillment_documents: None,
78 issuing_language: None,
79 fulfillment_parts: None,
80 content_complete: None,
81 trip_coverage: None,
82 inbound_trip_coverage: None,
83 continuous_service_usage: None,
84 _links: None,
85 }
86 }
87}
88