use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Booking {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "bookingCode", skip_serializing_if = "Option::is_none")]
pub booking_code: Option<String>,
#[serde(rename = "externalRef", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub external_ref: Option<Option<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 = "passengers")]
pub passengers: Vec<models::Passenger>,
#[serde(rename = "purchaser", skip_serializing_if = "Option::is_none")]
pub purchaser: Option<Box<models::Purchaser>>,
#[serde(rename = "provisionalPrice", skip_serializing_if = "Option::is_none")]
pub provisional_price: Option<Box<models::Price>>,
#[serde(rename = "provisionalRefundAmount", skip_serializing_if = "Option::is_none")]
pub provisional_refund_amount: Option<Box<models::Price>>,
#[serde(rename = "confirmedPrice", skip_serializing_if = "Option::is_none")]
pub confirmed_price: Option<Box<models::Price>>,
#[serde(rename = "bookedOffers", skip_serializing_if = "Option::is_none")]
pub booked_offers: Option<Vec<models::BookedOffer>>,
#[serde(rename = "trips", skip_serializing_if = "Option::is_none")]
pub trips: Option<Vec<models::Trip>>,
#[serde(rename = "requestedInformation", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub requested_information: Option<Option<String>>,
#[serde(rename = "confirmationTimeLimit", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub confirmation_time_limit: Option<Option<String>>,
#[serde(rename = "fulfillmentType", skip_serializing_if = "Option::is_none")]
pub fulfillment_type: Option<String>,
#[serde(rename = "fulfillments", skip_serializing_if = "Option::is_none")]
pub fulfillments: Option<Vec<models::Fulfillment>>,
#[serde(rename = "fulfillmentStatus", skip_serializing_if = "Option::is_none")]
pub fulfillment_status: Option<String>,
#[serde(rename = "issuedVouchers", skip_serializing_if = "Option::is_none")]
pub issued_vouchers: Option<Vec<models::VoucherInformation>>,
#[serde(rename = "documents", skip_serializing_if = "Option::is_none")]
pub documents: Option<Vec<models::Document>>,
#[serde(rename = "paymentMethods", skip_serializing_if = "Option::is_none")]
pub payment_methods: Option<Vec<models::PaymentMethod>>,
#[serde(rename = "refundOffers", skip_serializing_if = "Option::is_none")]
pub refund_offers: Option<Vec<models::RefundOffer>>,
#[serde(rename = "releaseOffers", skip_serializing_if = "Option::is_none")]
pub release_offers: Option<Vec<models::ReleaseOffer>>,
#[serde(rename = "cancelFulfillmentsOffers", skip_serializing_if = "Option::is_none")]
pub cancel_fulfillments_offers: Option<Vec<models::CancelFulfillmentsOffer>>,
#[serde(rename = "exchangeOperations", skip_serializing_if = "Option::is_none")]
pub exchange_operations: Option<Vec<models::ExchangeOperation>>,
#[serde(rename = "onHoldOffer", skip_serializing_if = "Option::is_none")]
pub on_hold_offer: Option<Box<models::OnHoldOffer>>,
#[serde(rename = "relatedBookingIds", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub related_booking_ids: Option<Option<Vec<String>>>,
#[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
pub _links: Option<Vec<models::Link>>,
}
impl Booking {
pub fn new(id: String, created_on: String, passengers: Vec<models::Passenger>) -> Booking {
Booking {
id,
booking_code: None,
external_ref: None,
summary: None,
created_on,
passengers,
purchaser: None,
provisional_price: None,
provisional_refund_amount: None,
confirmed_price: None,
booked_offers: None,
trips: None,
requested_information: None,
confirmation_time_limit: None,
fulfillment_type: None,
fulfillments: None,
fulfillment_status: None,
issued_vouchers: None,
documents: None,
payment_methods: None,
refund_offers: None,
release_offers: None,
cancel_fulfillments_offers: None,
exchange_operations: None,
on_hold_offer: None,
related_booking_ids: None,
_links: None,
}
}
}