1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
16pub struct Booking {
17 #[serde(rename = "id")]
18 pub id: String,
19 #[serde(rename = "bookingCode", skip_serializing_if = "Option::is_none")]
21 pub booking_code: Option<String>,
22 #[serde(rename = "externalRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
24 pub external_ref: Option<Option<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 = "passengers")]
31 pub passengers: Vec<models::Passenger>,
32 #[serde(rename = "purchaser", skip_serializing_if = "Option::is_none")]
33 pub purchaser: Option<Box<models::Purchaser>>,
34 #[serde(rename = "provisionalPrice", skip_serializing_if = "Option::is_none")]
35 pub provisional_price: Option<Box<models::Price>>,
36 #[serde(rename = "provisionalRefundAmount", skip_serializing_if = "Option::is_none")]
37 pub provisional_refund_amount: Option<Box<models::Price>>,
38 #[serde(rename = "confirmedPrice", skip_serializing_if = "Option::is_none")]
39 pub confirmed_price: Option<Box<models::Price>>,
40 #[serde(rename = "bookedOffers", skip_serializing_if = "Option::is_none")]
41 pub booked_offers: Option<Vec<models::BookedOffer>>,
42 #[serde(rename = "trips", skip_serializing_if = "Option::is_none")]
44 pub trips: Option<Vec<models::Trip>>,
45 #[serde(rename = "requestedInformation", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
47 pub requested_information: Option<Option<String>>,
48 #[serde(rename = "confirmationTimeLimit", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
50 pub confirmation_time_limit: Option<Option<String>>,
51 #[serde(rename = "fulfillmentType", skip_serializing_if = "Option::is_none")]
53 pub fulfillment_type: Option<String>,
54 #[serde(rename = "fulfillments", skip_serializing_if = "Option::is_none")]
55 pub fulfillments: Option<Vec<models::Fulfillment>>,
56 #[serde(rename = "fulfillmentStatus", skip_serializing_if = "Option::is_none")]
57 pub fulfillment_status: Option<String>,
58 #[serde(rename = "issuedVouchers", skip_serializing_if = "Option::is_none")]
59 pub issued_vouchers: Option<Vec<models::VoucherInformation>>,
60 #[serde(rename = "documents", skip_serializing_if = "Option::is_none")]
61 pub documents: Option<Vec<models::Document>>,
62 #[serde(rename = "paymentMethods", skip_serializing_if = "Option::is_none")]
63 pub payment_methods: Option<Vec<models::PaymentMethod>>,
64 #[serde(rename = "refundOffers", skip_serializing_if = "Option::is_none")]
66 pub refund_offers: Option<Vec<models::RefundOffer>>,
67 #[serde(rename = "releaseOffers", skip_serializing_if = "Option::is_none")]
68 pub release_offers: Option<Vec<models::ReleaseOffer>>,
69 #[serde(rename = "cancelFulfillmentsOffers", skip_serializing_if = "Option::is_none")]
70 pub cancel_fulfillments_offers: Option<Vec<models::CancelFulfillmentsOffer>>,
71 #[serde(rename = "exchangeOperations", skip_serializing_if = "Option::is_none")]
72 pub exchange_operations: Option<Vec<models::ExchangeOperation>>,
73 #[serde(rename = "onHoldOffer", skip_serializing_if = "Option::is_none")]
74 pub on_hold_offer: Option<Box<models::OnHoldOffer>>,
75 #[serde(rename = "relatedBookingIds", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
77 pub related_booking_ids: Option<Option<Vec<String>>>,
78 #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
80 pub _links: Option<Vec<models::Link>>,
81}
82
83impl Booking {
84 pub fn new(id: String, created_on: String, passengers: Vec<models::Passenger>) -> Booking {
85 Booking {
86 id,
87 booking_code: None,
88 external_ref: None,
89 summary: None,
90 created_on,
91 passengers,
92 purchaser: None,
93 provisional_price: None,
94 provisional_refund_amount: None,
95 confirmed_price: None,
96 booked_offers: None,
97 trips: None,
98 requested_information: None,
99 confirmation_time_limit: None,
100 fulfillment_type: None,
101 fulfillments: None,
102 fulfillment_status: None,
103 issued_vouchers: None,
104 documents: None,
105 payment_methods: None,
106 refund_offers: None,
107 release_offers: None,
108 cancel_fulfillments_offers: None,
109 exchange_operations: None,
110 on_hold_offer: None,
111 related_booking_ids: None,
112 _links: None,
113 }
114 }
115}
116