eventlib/dto/
experiment_event_response.rs
use chrono::naive::serde::ts_milliseconds;
use chrono::NaiveDateTime;
use common::enums::{status::Status, subject::Subject};
use common::model::payment_discount::PaymentDiscount;
use common::model::payment_price_component::PaymentPriceComponent;
use common::utils::serialize_option_naive_date;
use serde::{Deserialize, Serialize};
use serde_json;
use std::collections::HashMap;
use uuid::Uuid;
use common::enums::roles_for_content::RolesForContent;
use crate::dto::experiment_user_response::ExperimentUserResponse;
use crate::dto::feedback_response::FeedbackResponse;
use crate::enums::location_type::LocationType;
use crate::enums::privacy::Privacy;
use crate::enums::scenario_type::ScenarioType;
use crate::jsonb::section::Section;
use crate::jsonb::travel_detail::TravelDetail;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ExperimentEventResponse {
pub id: Uuid,
pub title: String,
#[serde(rename = "date")]
#[serde(with = "ts_milliseconds")]
pub event_date: NaiveDateTime,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date_end: Option<NaiveDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
pub capacity: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fee: Option<f32>,
pub latitude: f64,
pub longitude: f64,
#[serde(skip_serializing_if = "Option::is_none")]
pub cancel_registration: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub multiple_tickets: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ver: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub experiment: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub organization: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub organizer: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chat: Option<Uuid>,
#[serde(skip_serializing_if = "Option::is_none")]
pub latitude_meeting_place: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub longitude_meeting_place: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subjects: Option<Vec<Subject>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub years: Option<Vec<i32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_tasks: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub award_stuffs: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sections: Option<HashMap<Uuid, Section>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub main_picture: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub format: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub location_type: Option<LocationType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub privacy: Option<Privacy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub scenario_type: Option<ScenarioType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<Status>,
#[serde(skip_serializing_if = "Option::is_none")]
pub type_of_meeting_place: Option<LocationType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_street: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_suburb: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_state: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_postcode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub meeting_place_coincides: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_street_meeting_place: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub addr_instructions_meeting_place: Option<String>,
pub is_free: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub phone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub registration_confirmation: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locate_position: Option<i32>,
pub experiment_user_list: Vec<ExperimentUserResponse>,
pub feedbacks: Vec<FeedbackResponse>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_confirmation: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub travel_details: Option<Vec<TravelDetail>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price_components: Option<Vec<PaymentPriceComponent>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub discounts_applicable: Option<Vec<PaymentDiscount>>,
pub for_roles: Vec<RolesForContent>,
}