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 Offer {
17 #[serde(rename = "offerId")]
18 pub offer_id: String,
19 #[serde(rename = "summary", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
21 pub summary: Option<Option<String>>,
22 #[serde(rename = "offerSummary", skip_serializing_if = "Option::is_none")]
23 pub offer_summary: Option<Box<models::OfferSummary>>,
24 #[serde(rename = "createdOn")]
25 pub created_on: String,
26 #[serde(rename = "preBookableUntil")]
28 pub pre_bookable_until: String,
29 #[serde(rename = "passengerRefs")]
30 pub passenger_refs: Vec<String>,
31 #[serde(rename = "products", skip_serializing_if = "Option::is_none")]
32 pub products: Option<Vec<models::Product>>,
33 #[serde(rename = "tripCoverage", skip_serializing_if = "Option::is_none")]
34 pub trip_coverage: Option<Box<models::TripCoverage>>,
35 #[serde(rename = "inboundTripCoverage", skip_serializing_if = "Option::is_none")]
36 pub inbound_trip_coverage: Option<Box<models::TripCoverage>>,
37 #[serde(rename = "admissionOfferParts", skip_serializing_if = "Option::is_none")]
38 pub admission_offer_parts: Option<Vec<models::AdmissionOfferPart>>,
39 #[serde(rename = "reservationOfferParts", skip_serializing_if = "Option::is_none")]
40 pub reservation_offer_parts: Option<Vec<models::ReservationOfferPart>>,
41 #[serde(rename = "ancillaryOfferParts", skip_serializing_if = "Option::is_none")]
42 pub ancillary_offer_parts: Option<Vec<models::AncillaryOfferPart>>,
43 #[serde(rename = "continuousServiceOfferParts", skip_serializing_if = "Option::is_none")]
44 pub continuous_service_offer_parts: Option<Vec<models::ContinuousServiceOfferPart>>,
45 #[serde(rename = "fees", skip_serializing_if = "Option::is_none")]
46 pub fees: Option<Vec<models::Fee>>,
47 #[serde(rename = "fares", skip_serializing_if = "Option::is_none")]
48 pub fares: Option<Vec<models::Fare>>,
49 #[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
51 pub _links: Option<Vec<models::Link>>,
52}
53
54impl Offer {
55 pub fn new(offer_id: String, created_on: String, pre_bookable_until: String, passenger_refs: Vec<String>) -> Offer {
56 Offer {
57 offer_id,
58 summary: None,
59 offer_summary: None,
60 created_on,
61 pre_bookable_until,
62 passenger_refs,
63 products: None,
64 trip_coverage: None,
65 inbound_trip_coverage: None,
66 admission_offer_parts: None,
67 reservation_offer_parts: None,
68 ancillary_offer_parts: None,
69 continuous_service_offer_parts: None,
70 fees: None,
71 fares: None,
72 _links: None,
73 }
74 }
75}
76