programlib/dto/
program_response.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::enums::delivery_mode::DeliveryMode;
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct ProgramResponse {
pub id: Uuid,
pub name: String,
pub description: String,
pub activity_type: ActivityType,
pub delivery_mode: DeliveryMode,
#[serde(skip_serializing_if = "Option::is_none")]
pub subject: Option<Subject>,
pub status: Status,
#[serde(skip_serializing_if = "Option::is_none")]
pub feedback: Option<serde_json::Value>,
pub available_below: Uuid,
pub organization: Uuid,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub facilities: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub design: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub logo: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub banner: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub identity_color: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date_start: Option<NaiveDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date_end: Option<NaiveDateTime>,
}