use crate::enums::aboriginality_type::AboriginalityType;
use crate::enums::residency_type::ResidencyType;
use crate::jsonb::last_school::PreviousSchool;
use crate::jsonb::sibling::Sibling;
use chrono::NaiveDateTime;
use common::utils::serialize_option_naive_date;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct StudentForm {
pub family_name: String, pub first_name: String, pub email: String,
pub second_name: Option<String>,
pub preferred_name: Option<String>,
pub gender: Option<String>, #[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub birth_date: Option<NaiveDateTime>, pub enrol_year: String, #[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub start_date: Option<NaiveDateTime>, pub enroled_siblings: bool,
pub siblings: Option<Vec<Sibling>>,
pub aboriginality: Option<AboriginalityType>, pub lang_other_eng: bool, pub other_main_lang: Option<String>,
pub other_langs: Option<String>,
pub phone_number: Option<String>,
pub residency_status: ResidencyType, #[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub date_of_arrival: Option<NaiveDateTime>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub return_date: Option<NaiveDateTime>,
pub visa_subclass: Option<i32>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub visa_expiry_date: Option<NaiveDateTime>,
#[serde(default)]
#[serde(with = "serialize_option_naive_date")]
pub first_enrolment_date: Option<NaiveDateTime>,
pub previous_schools: Option<Vec<PreviousSchool>>,
pub in_non_parental_care: bool, pub preschool_education: Option<bool>,
pub preschool_time: Option<String>,
pub preschool_postcode: Option<i32>,
pub long_day_care_with: Option<bool>,
pub long_day_care_with_time: Option<String>,
pub long_day_care_with_postcode: Option<i32>,
pub long_day_care_without: Option<bool>,
pub long_day_care_without_time: Option<String>,
pub long_day_care_without_postcode: Option<i32>,
pub family_day_care: Option<bool>,
pub family_day_care_time: Option<String>,
pub grandparent: Option<bool>,
pub grandparent_time: Option<String>,
pub other_care: Option<bool>,
pub other_care_time: Option<String>,
pub name_care_service: Option<String>,
}