osdm_sys/models/
offer_selection.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 OfferSelection {
18 #[serde(rename = "offerId")]
20 pub offer_id: String,
21 #[serde(rename = "externalRef", skip_serializing_if = "Option::is_none")]
23 pub external_ref: Option<String>,
24 #[serde(rename = "optionalReservationSelections", skip_serializing_if = "Option::is_none")]
26 pub optional_reservation_selections: Option<Vec<models::ReservationSelection>>,
27 #[serde(rename = "optionalAncillarySelections", skip_serializing_if = "Option::is_none")]
28 pub optional_ancillary_selections: Option<Vec<models::AncillarySelection>>,
29 #[serde(rename = "placeSelections", skip_serializing_if = "Option::is_none")]
30 pub place_selections: Option<Vec<models::PlaceSelection>>,
31 #[serde(rename = "afterSaleByRetailerOnly", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
33 pub after_sale_by_retailer_only: Option<Option<bool>>,
34 #[serde(rename = "appliedRegulatoryCondition", skip_serializing_if = "Option::is_none")]
35 pub applied_regulatory_condition: Option<models::RegulatoryCondition>,
36 #[serde(rename = "passengerRefs")]
37 pub passenger_refs: Vec<String>,
38 #[serde(rename = "throughTicketTags", skip_serializing_if = "Option::is_none")]
39 pub through_ticket_tags: Option<Vec<String>>,
40}
41
42impl OfferSelection {
43 pub fn new(offer_id: String, passenger_refs: Vec<String>) -> OfferSelection {
45 OfferSelection {
46 offer_id,
47 external_ref: None,
48 optional_reservation_selections: None,
49 optional_ancillary_selections: None,
50 place_selections: None,
51 after_sale_by_retailer_only: None,
52 applied_regulatory_condition: None,
53 passenger_refs,
54 through_ticket_tags: None,
55 }
56 }
57}
58