use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct Trip {
#[serde(rename = "id")]
pub id: 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 = "duration")]
pub duration: String,
#[serde(rename = "direction", skip_serializing_if = "Option::is_none")]
pub direction: Option<models::TripDirectionType>,
#[serde(rename = "origin", skip_serializing_if = "Option::is_none")]
pub origin: Option<Box<models::PlaceRef>>,
#[serde(rename = "originName", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub origin_name: Option<Option<String>>,
#[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
pub destination: Option<Box<models::PlaceRef>>,
#[serde(rename = "destinationName", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub destination_name: Option<Option<String>>,
#[serde(rename = "startTime")]
pub start_time: String,
#[serde(rename = "endTime")]
pub end_time: String,
#[serde(rename = "transfers")]
pub transfers: i32,
#[serde(rename = "distance", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub distance: Option<Option<i32>>,
#[serde(rename = "legs")]
pub legs: Vec<models::TripLeg>,
#[serde(rename = "operatingDays", skip_serializing_if = "Option::is_none")]
pub operating_days: Option<Box<models::OperatingDays>>,
#[serde(rename = "operatingDaysDescription", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub operating_days_description: Option<Option<String>>,
#[serde(rename = "situationFullRefs", skip_serializing_if = "Option::is_none")]
pub situation_full_refs: Option<Vec<String>>,
#[serde(rename = "tripStatus", skip_serializing_if = "Option::is_none")]
pub trip_status: Option<Box<models::TripStatus>>,
#[serde(rename = "_links", skip_serializing_if = "Option::is_none")]
pub _links: Option<Vec<models::Link>>,
}
impl Trip {
pub fn new(id: String, duration: String, start_time: String, end_time: String, transfers: i32, legs: Vec<models::TripLeg>) -> Trip {
Trip {
id,
external_ref: None,
summary: None,
duration,
direction: None,
origin: None,
origin_name: None,
destination: None,
destination_name: None,
start_time,
end_time,
transfers,
distance: None,
legs,
operating_days: None,
operating_days_description: None,
situation_full_refs: None,
trip_status: None,
_links: None,
}
}
}