1use 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 Fare {
18 #[serde(rename = "id")]
20 pub id: String,
21 #[serde(rename = "type")]
23 pub r#type: String,
24 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
25 pub name: Option<Box<models::Text>>,
26 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
27 pub description: Option<Box<models::Text>>,
28 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
29 pub status: Option<models::BookingPartStatus>,
30 #[serde(rename = "prices")]
32 pub prices: Vec<models::Price>,
33 #[serde(rename = "regionalConstraint")]
34 pub regional_constraint: Box<models::RegionalConstraint>,
35 #[serde(rename = "serviceConstraint", skip_serializing_if = "Option::is_none")]
36 pub service_constraint: Option<Box<models::ServiceConstraint>>,
37 #[serde(rename = "carrierConstraint", skip_serializing_if = "Option::is_none")]
38 pub carrier_constraint: Option<Box<models::CarrierConstraint>>,
39 #[serde(rename = "regulatoryConditions", skip_serializing_if = "Option::is_none")]
40 pub regulatory_conditions: Option<Vec<models::RegulatoryCondition>>,
41 #[serde(rename = "serviceClass", skip_serializing_if = "Option::is_none")]
42 pub service_class: Option<Box<models::ServiceClass>>,
43 #[serde(rename = "travelClass")]
45 pub travel_class: String,
46 #[serde(rename = "afterSalesCondition")]
47 pub after_sales_condition: Box<models::AfterSalesConditionsLink>,
48 #[serde(rename = "combinationConstraint")]
49 pub combination_constraint: Vec<models::FareCombinationModel>,
50 #[serde(rename = "fulfillmentConstraint", skip_serializing_if = "Option::is_none")]
51 pub fulfillment_constraint: Option<Box<models::FulfillmentConstraint>>,
52 #[serde(rename = "travelValidityConstraint")]
53 pub travel_validity_constraint: Box<models::TravelValidity>,
54 #[serde(rename = "availablePlaces", skip_serializing_if = "Option::is_none")]
55 pub available_places: Option<Vec<models::AvailablePlace>>,
56 #[serde(rename = "placeSelection", skip_serializing_if = "Option::is_none")]
57 pub place_selection: Option<Box<models::PlaceSelection>>,
58 #[serde(rename = "placeAllocation", skip_serializing_if = "Option::is_none")]
59 pub place_allocation: Option<Vec<models::PlaceAllocation>>,
60 #[serde(rename = "coveredSection", skip_serializing_if = "Option::is_none")]
61 pub covered_section: Option<Box<models::Section>>,
62 #[serde(rename = "passengerRefs", skip_serializing_if = "Option::is_none")]
63 pub passenger_refs: Option<Vec<String>>,
64 #[serde(rename = "passengerConstraints", skip_serializing_if = "Option::is_none")]
66 pub passenger_constraints: Option<Vec<models::PassengerConstraints>>,
67 #[serde(rename = "involvedTCOs", skip_serializing_if = "Option::is_none")]
68 pub involved_tcos: Option<Vec<String>>,
69 #[serde(rename = "accountingRef", skip_serializing_if = "Option::is_none")]
70 pub accounting_ref: Option<Box<models::AccountingRef>>,
71 #[serde(rename = "legacyAccountingIdentifier", skip_serializing_if = "Option::is_none")]
72 pub legacy_accounting_identifier: Option<Box<models::LegacyAccountingIdentifier>>,
73 #[serde(rename = "legacyReservationParameter", skip_serializing_if = "Option::is_none")]
74 pub legacy_reservation_parameter: Option<Box<models::LegacyReservationParameter>>,
75 #[serde(rename = "requiredCards", skip_serializing_if = "Option::is_none")]
77 pub required_cards: Option<Vec<models::CardReference>>,
78 #[serde(rename = "luggageConstraint", skip_serializing_if = "Option::is_none")]
79 pub luggage_constraint: Option<Box<models::LuggageConstraint>>,
80 #[serde(rename = "availablePreferences", skip_serializing_if = "Option::is_none")]
81 pub available_preferences: Option<Vec<models::AvailablePlacePreferences>>,
82}
83
84impl Fare {
85 pub fn new(id: String, r#type: String, prices: Vec<models::Price>, regional_constraint: models::RegionalConstraint, travel_class: String, after_sales_condition: models::AfterSalesConditionsLink, combination_constraint: Vec<models::FareCombinationModel>, travel_validity_constraint: models::TravelValidity) -> Fare {
87 Fare {
88 id,
89 r#type,
90 name: None,
91 description: None,
92 status: None,
93 prices,
94 regional_constraint: Box::new(regional_constraint),
95 service_constraint: None,
96 carrier_constraint: None,
97 regulatory_conditions: None,
98 service_class: None,
99 travel_class,
100 after_sales_condition: Box::new(after_sales_condition),
101 combination_constraint,
102 fulfillment_constraint: None,
103 travel_validity_constraint: Box::new(travel_validity_constraint),
104 available_places: None,
105 place_selection: None,
106 place_allocation: None,
107 covered_section: None,
108 passenger_refs: None,
109 passenger_constraints: None,
110 involved_tcos: None,
111 accounting_ref: None,
112 legacy_accounting_identifier: None,
113 legacy_reservation_parameter: None,
114 required_cards: None,
115 luggage_constraint: None,
116 available_preferences: None,
117 }
118 }
119}
120