userlib/jsonb/
student.rs

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, //
14    pub first_name: String, //
15    pub email: String,
16    pub second_name: Option<String>,
17    pub preferred_name: Option<String>,
18    pub gender: Option<String>, //
19    #[serde(default)]
20    #[serde(with = "serialize_option_naive_date")]
21    pub birth_date: Option<NaiveDateTime>, //
22    pub enrol_year: String, //
23    #[serde(default)]
24    #[serde(with = "serialize_option_naive_date")]
25    pub start_date: Option<NaiveDateTime>, //
26    pub enroled_siblings: bool,
27    pub siblings: Option<Vec<Sibling>>,
28    pub aboriginality: Option<AboriginalityType>, //
29    pub lang_other_eng: bool, //
30    pub other_main_lang: Option<String>,
31    pub other_langs: Option<String>,
32    pub phone_number: Option<String>,
33    pub residency_status: ResidencyType, //
34    #[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 other_schools: Option<String>,
49    pub in_non_parental_care: bool, //
50    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}