1use crate::enums::aboriginality_type::AboriginalityType;
2use crate::enums::residency_type::ResidencyType;
3use crate::jsonb::last_school::PreviousSchool;
4use crate::jsonb::sibling::Sibling;
5use chrono::NaiveDateTime;
6use common::utils::serialize_option_naive_date;
7use postgres_types::{FromSql, ToSql};
8use serde::{Deserialize, Serialize};
9
10#[derive(Serialize, Deserialize, Debug, Clone, FromSql, ToSql, Default)]
11#[serde(rename_all = "camelCase")]
12pub struct StudentForm {
13 pub family_name: String, pub first_name: String, pub email: String,
16 pub second_name: Option<String>,
17 pub preferred_name: Option<String>,
18 pub gender: Option<String>, #[serde(default)]
20 #[serde(with = "serialize_option_naive_date")]
21 pub birth_date: Option<NaiveDateTime>, pub enrol_year: String, #[serde(default)]
24 #[serde(with = "serialize_option_naive_date")]
25 pub start_date: Option<NaiveDateTime>, pub enroled_siblings: bool,
27 pub siblings: Option<Vec<Sibling>>,
28 pub aboriginality: Option<AboriginalityType>, pub lang_other_eng: bool, pub other_main_lang: Option<String>,
31 pub other_langs: Option<String>,
32 pub phone_number: Option<String>,
33 pub residency_status: ResidencyType, #[serde(default)]
35 #[serde(with = "serialize_option_naive_date")]
36 pub date_of_arrival: Option<NaiveDateTime>,
37 #[serde(default)]
38 #[serde(with = "serialize_option_naive_date")]
39 pub return_date: Option<NaiveDateTime>,
40 pub visa_subclass: Option<i32>,
41 #[serde(default)]
42 #[serde(with = "serialize_option_naive_date")]
43 pub visa_expiry_date: Option<NaiveDateTime>,
44 #[serde(default)]
45 #[serde(with = "serialize_option_naive_date")]
46 pub first_enrolment_date: Option<NaiveDateTime>,
47 pub previous_schools: Option<Vec<PreviousSchool>>,
48 pub in_non_parental_care: bool, pub preschool_education: Option<bool>,
51 pub preschool_time: Option<String>,
52 pub preschool_postcode: Option<i32>,
53 pub long_day_care_with: Option<bool>,
54 pub long_day_care_with_time: Option<String>,
55 pub long_day_care_with_postcode: Option<i32>,
56 pub long_day_care_without: Option<bool>,
57 pub long_day_care_without_time: Option<String>,
58 pub long_day_care_without_postcode: Option<i32>,
59 pub family_day_care: Option<bool>,
60 pub family_day_care_time: Option<String>,
61 pub grandparent: Option<bool>,
62 pub grandparent_time: Option<String>,
63 pub other_care: Option<bool>,
64 pub other_care_time: Option<String>,
65 pub name_care_service: Option<String>,
66}