programlib/dto/
program_request.rsuse chrono::NaiveDateTime;
use common::enums::activity_type::ActivityType;
use common::enums::status::Status;
use common::enums::subject::Subject;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use common::utils::serialize_option_naive_date;
use crate::dto::program_group_request::ProgramGroupRequest;
use crate::dto::session_request::SessionRequest;
use crate::enums::delivery_mode::DeliveryMode;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ProgramRequest {
pub id: Option<Uuid>,
pub name: String,
pub description: String,
pub activity_type: ActivityType,
pub delivery_mode: DeliveryMode,
pub subject: Option<Subject>,
pub status: Status,
pub feedback: Option<serde_json::Value>,
pub available_below: Uuid,
pub organization: Uuid,
pub location: Option<serde_json::Value>,
pub facilities: Option<serde_json::Value>,
pub design: Option<serde_json::Value>,
pub logo: Option<String>,
pub banner: Option<String>,
pub identity_color: Option<String>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date_start: Option<NaiveDateTime>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date_end: Option<NaiveDateTime>,
pub groups: Option<Vec<ProgramGroupRequest>>,
pub sessions: Option<Vec<SessionRequest>>,
}