competitionlib/dto/
competition_request.rsuse chrono::NaiveDateTime;
use common::enums::activity_type::ActivityType;
use common::enums::registration_type::RegistrationType;
use common::enums::status::Status;
use common::model::form::Form;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use common::utils::serialize_option_naive_date;
use crate::dto::division_request::DivisionRequest;
use crate::dto::game_request::GameRequest;
use crate::enums::allowed_until_type::AllowedUntilType;
use crate::enums::competition_visibility::CompetitionVisibility;
use crate::enums::participant_type::ParticipantType;
use crate::enums::participation_type::ParticipationType;
use crate::enums::tournament_system_type::TournamentSystemType;
use crate::jsonb::certificate_kind::CertificateKind;
use crate::jsonb::education_benefit::EducationBenefits;
use crate::jsonb::organizator::Organizator;
use crate::jsonb::sponsor::Sponsor;
use crate::jsonb::prize::Prize;
use crate::jsonb::ticket_kind::TicketKind;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct CompetitionRequest {
pub id: Option<Uuid>,
pub title: String,
pub logo: Option<String>,
pub place: Option<diesel_json::Json<serde_json::Value>>,
pub sponsor: Option<diesel_json::Json<Vec<Sponsor>>>,
pub organizator: Option<diesel_json::Json<Vec<Organizator>>>,
pub prizes: Option<diesel_json::Json<Vec<Prize>>>,
pub status: Status,
pub general_rules: String,
pub cover_image: Option<String>,
pub identity_color: String,
pub visibility: CompetitionVisibility,
pub available_below: Option<Uuid>,
pub about: String,
pub education_benefits: Option<diesel_json::Json<Vec<EducationBenefits>>>,
pub specific_rules: Option<String>,
pub allowed_until: Option<AllowedUntilType>,
pub days_before: Option<i32>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date: Option<NaiveDateTime>,
pub participation_type: Option<ParticipationType>,
pub form: Option<diesel_json::Json<Vec<Form>>>,
pub organization: Option<Uuid>,
pub registration_type: RegistrationType,
pub target_participants: Option<Vec<ParticipantType>>,
pub category: Option<ActivityType>,
pub tournament_system_type: Option<TournamentSystemType>,
pub tickets: Option<Vec<TicketKind>>,
pub divisions: Option<Vec<DivisionRequest>>,
pub schedules: Option<Vec<GameRequest>>,
pub certificates: Option<Vec<CertificateKind>>,
}