mirror of
https://github.com/danbulant/Portfolio
synced 2026-05-27 14:02:14 +00:00
Merge pull request #161 from EETagent/test_lang_choice
(backend) (frontend) Test lang choice
This commit is contained in:
commit
0a3ce57b09
11 changed files with 45 additions and 14 deletions
|
|
@ -318,7 +318,8 @@ mod tests {
|
||||||
\"personalIdNumber\": \"0101010000\",
|
\"personalIdNumber\": \"0101010000\",
|
||||||
\"schoolName\": \"29988383\",
|
\"schoolName\": \"29988383\",
|
||||||
\"healthInsurance\": \"000\",
|
\"healthInsurance\": \"000\",
|
||||||
\"grades\": []
|
\"grades\": [],
|
||||||
|
\"testLanguage\": \"CZ\"
|
||||||
},
|
},
|
||||||
\"parents\": [
|
\"parents\": [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,7 @@ impl Mutation {
|
||||||
candidate.school_name = Set(enc_candidate.school_name.map(|e| e.into()));
|
candidate.school_name = Set(enc_candidate.school_name.map(|e| e.into()));
|
||||||
candidate.health_insurance = Set(enc_candidate.health_insurance.map(|e| e.into()));
|
candidate.health_insurance = Set(enc_candidate.health_insurance.map(|e| e.into()));
|
||||||
candidate.grades_json = Set(enc_candidate.grades_json.map(|e| e.into()));
|
candidate.grades_json = Set(enc_candidate.grades_json.map(|e| e.into()));
|
||||||
|
candidate.test_language = Set(enc_candidate.test_language.map(|s| s));
|
||||||
candidate.encrypted_by_id = Set(Some(encrypted_by_id));
|
candidate.encrypted_by_id = Set(Some(encrypted_by_id));
|
||||||
|
|
||||||
candidate.updated_at = Set(chrono::offset::Local::now().naive_local());
|
candidate.updated_at = Set(chrono::offset::Local::now().naive_local());
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,7 @@ pub struct CandidateDetails {
|
||||||
pub school_name: String,
|
pub school_name: String,
|
||||||
pub health_insurance: String,
|
pub health_insurance: String,
|
||||||
pub grades: GradeList,
|
pub grades: GradeList,
|
||||||
|
pub test_language: String,
|
||||||
}
|
}
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
|
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ pub struct EncryptedCandidateDetails {
|
||||||
pub school_name: Option<EncryptedString>,
|
pub school_name: Option<EncryptedString>,
|
||||||
pub health_insurance: Option<EncryptedString>,
|
pub health_insurance: Option<EncryptedString>,
|
||||||
pub grades_json: Option<EncryptedString>,
|
pub grades_json: Option<EncryptedString>,
|
||||||
|
pub test_language: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
|
@ -151,6 +152,7 @@ impl EncryptedCandidateDetails {
|
||||||
school_name: d.10,
|
school_name: d.10,
|
||||||
health_insurance: d.11,
|
health_insurance: d.11,
|
||||||
grades_json: d.12,
|
grades_json: d.12,
|
||||||
|
test_language: Some(form.test_language.to_owned()),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -186,6 +188,7 @@ impl EncryptedCandidateDetails {
|
||||||
school_name: d.10.unwrap_or_default(),
|
school_name: d.10.unwrap_or_default(),
|
||||||
health_insurance: d.11.unwrap_or_default(),
|
health_insurance: d.11.unwrap_or_default(),
|
||||||
grades: GradeList::from_opt_str(d.12).unwrap_or_default(),
|
grades: GradeList::from_opt_str(d.12).unwrap_or_default(),
|
||||||
|
test_language: self.test_language.to_owned().unwrap_or_default().to_string(),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -221,6 +224,7 @@ impl From<&candidate::Model> for EncryptedCandidateDetails {
|
||||||
school_name: EncryptedString::try_from(&candidate.school_name).ok(),
|
school_name: EncryptedString::try_from(&candidate.school_name).ok(),
|
||||||
health_insurance: EncryptedString::try_from(&candidate.health_insurance).ok(),
|
health_insurance: EncryptedString::try_from(&candidate.health_insurance).ok(),
|
||||||
grades_json: EncryptedString::try_from(&candidate.grades_json).ok(),
|
grades_json: EncryptedString::try_from(&candidate.grades_json).ok(),
|
||||||
|
test_language: candidate.test_language.to_owned(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -359,6 +363,7 @@ impl TryFrom<ApplicationRow> for EncryptedApplicationDetails {
|
||||||
school_name: EncryptedString::try_from(&cp.school_name).ok(),
|
school_name: EncryptedString::try_from(&cp.school_name).ok(),
|
||||||
health_insurance: EncryptedString::try_from(&cp.health_insurance).ok(),
|
health_insurance: EncryptedString::try_from(&cp.health_insurance).ok(),
|
||||||
grades_json: None, // TODO
|
grades_json: None, // TODO
|
||||||
|
test_language: None // TODO
|
||||||
},
|
},
|
||||||
parents: vec![EncryptedParentDetails {
|
parents: vec![EncryptedParentDetails {
|
||||||
name: EncryptedString::try_from(&cp.parent_name).ok(),
|
name: EncryptedString::try_from(&cp.parent_name).ok(),
|
||||||
|
|
@ -413,6 +418,7 @@ pub mod tests {
|
||||||
school_name: "school_name".to_string(),
|
school_name: "school_name".to_string(),
|
||||||
health_insurance: "health_insurance".to_string(),
|
health_insurance: "health_insurance".to_string(),
|
||||||
grades: GradeList::from(vec![]),
|
grades: GradeList::from(vec![]),
|
||||||
|
test_language: "test_language".to_string(),
|
||||||
},
|
},
|
||||||
parents: vec![ParentDetails {
|
parents: vec![ParentDetails {
|
||||||
name: "parent_name".to_string(),
|
name: "parent_name".to_string(),
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ pub struct GradeList(Vec<Grade>);
|
||||||
|
|
||||||
impl GradeList {
|
impl GradeList {
|
||||||
pub fn from_opt_str(grades: Option<String>) -> Option<Self> {
|
pub fn from_opt_str(grades: Option<String>) -> Option<Self> {
|
||||||
println!("grades: {:?}", grades);
|
|
||||||
grades.map(
|
grades.map(
|
||||||
|grades| serde_json::from_str(&grades).unwrap() // TODO: handle error
|
|grades| serde_json::from_str(&grades).unwrap() // TODO: handle error
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ mod tests {
|
||||||
school_name: "school_name".to_string(),
|
school_name: "school_name".to_string(),
|
||||||
health_insurance: "health_insurance".to_string(),
|
health_insurance: "health_insurance".to_string(),
|
||||||
grades: GradeList::from(vec![]),
|
grades: GradeList::from(vec![]),
|
||||||
|
test_language: "test_language".to_string(),
|
||||||
},
|
},
|
||||||
parents: vec![ParentDetails {
|
parents: vec![ParentDetails {
|
||||||
name: "parent_name".to_string(),
|
name: "parent_name".to_string(),
|
||||||
|
|
@ -128,6 +129,10 @@ mod tests {
|
||||||
assert_eq!(dec_details.candidate.email, form.candidate.email);
|
assert_eq!(dec_details.candidate.email, form.candidate.email);
|
||||||
assert_eq!(dec_details.candidate.sex, form.candidate.sex);
|
assert_eq!(dec_details.candidate.sex, form.candidate.sex);
|
||||||
assert_eq!(dec_details.candidate.personal_id_number, "0000001111".to_string());
|
assert_eq!(dec_details.candidate.personal_id_number, "0000001111".to_string());
|
||||||
|
assert_eq!(dec_details.candidate.school_name, form.candidate.school_name);
|
||||||
|
assert_eq!(dec_details.candidate.health_insurance, form.candidate.health_insurance);
|
||||||
|
assert_eq!(dec_details.candidate.grades, form.candidate.grades);
|
||||||
|
assert_eq!(dec_details.candidate.test_language, form.candidate.test_language);
|
||||||
|
|
||||||
assert_eq!(dec_details.parents.len(), form.parents.len());
|
assert_eq!(dec_details.parents.len(), form.parents.len());
|
||||||
for i in 0..dec_details.parents.len() {
|
for i in 0..dec_details.parents.len() {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ pub struct Model {
|
||||||
pub school_name: Option<String>,
|
pub school_name: Option<String>,
|
||||||
pub health_insurance: Option<String>,
|
pub health_insurance: Option<String>,
|
||||||
pub grades_json: Option<String>,
|
pub grades_json: Option<String>,
|
||||||
|
pub test_language: Option<String>,
|
||||||
pub encrypted_by_id: Option<i32>,
|
pub encrypted_by_id: Option<i32>,
|
||||||
pub created_at: DateTime,
|
pub created_at: DateTime,
|
||||||
pub updated_at: DateTime,
|
pub updated_at: DateTime,
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ export interface CandidateData {
|
||||||
schoolName: string;
|
schoolName: string;
|
||||||
healthInsurance: string;
|
healthInsurance: string;
|
||||||
grades: Array<GradeBackend>;
|
grades: Array<GradeBackend>;
|
||||||
|
testLanguage: string;
|
||||||
};
|
};
|
||||||
parents: Array<{
|
parents: Array<{
|
||||||
name: string;
|
name: string;
|
||||||
|
|
@ -75,7 +76,8 @@ export const candidateData = writable<CandidateData>({
|
||||||
personalIdNumber: '',
|
personalIdNumber: '',
|
||||||
schoolName: '',
|
schoolName: '',
|
||||||
healthInsurance: '',
|
healthInsurance: '',
|
||||||
grades: []
|
grades: [],
|
||||||
|
testLanguage: ''
|
||||||
},
|
},
|
||||||
parents: []
|
parents: []
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,8 @@ export const load: PageServerLoad = async ({ fetch, params }) => {
|
||||||
personalIdNumber: '',
|
personalIdNumber: '',
|
||||||
schoolName: '',
|
schoolName: '',
|
||||||
healthInsurance: '',
|
healthInsurance: '',
|
||||||
grades: []
|
grades: [],
|
||||||
|
testLanguage: ''
|
||||||
},
|
},
|
||||||
parents: []
|
parents: []
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,8 @@
|
||||||
personalIdNumber: '',
|
personalIdNumber: '',
|
||||||
schoolName: '',
|
schoolName: '',
|
||||||
healthInsurance: '',
|
healthInsurance: '',
|
||||||
grades: []
|
grades: [],
|
||||||
|
testLanguage: '',
|
||||||
},
|
},
|
||||||
parents: [
|
parents: [
|
||||||
{
|
{
|
||||||
|
|
@ -120,7 +121,8 @@
|
||||||
semester: yup.string().required()
|
semester: yup.string().required()
|
||||||
})
|
})
|
||||||
.required()
|
.required()
|
||||||
).required()
|
).required(),
|
||||||
|
testLanguage: yup.string().required(),
|
||||||
}),
|
}),
|
||||||
parents: yup.array().of(
|
parents: yup.array().of(
|
||||||
yup.object().shape({
|
yup.object().shape({
|
||||||
|
|
@ -623,14 +625,24 @@
|
||||||
se hlásíte.
|
se hlásíte.
|
||||||
</p>
|
</p>
|
||||||
<div class="flex w-full flex-col">
|
<div class="flex w-full flex-col">
|
||||||
<span class="field">
|
<div class="field flex w-full">
|
||||||
<SelectField
|
<span class="w-[50%]">
|
||||||
error={$typedErrors['candidate']['citizenship']}
|
<SelectField
|
||||||
bind:value={$form.candidate.citizenship}
|
error={$typedErrors['candidate']['citizenship']}
|
||||||
placeholder="Občanství"
|
bind:value={$form.candidate.citizenship}
|
||||||
options={['Česká republika', 'Slovenská republika', 'Ukrajina', 'Jiné']}
|
placeholder="Občanství"
|
||||||
/>
|
options={['Česká republika', 'Slovenská republika', 'Ukrajina', 'Jiné']}
|
||||||
</span>
|
/>
|
||||||
|
</span>
|
||||||
|
<span class="w-[50%] ml-2">
|
||||||
|
<SelectField
|
||||||
|
error={$typedErrors['candidate']['testLanguage']}
|
||||||
|
bind:value={$form.candidate.testLanguage}
|
||||||
|
placeholder="Jazyk odborných testů"
|
||||||
|
options={['Čeština', 'Angličtina']}
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
<div class="field flex flex-row">
|
<div class="field flex flex-row">
|
||||||
<span>
|
<span>
|
||||||
{#if $form.candidate.citizenship === 'Česká republika' || !$form.candidate.citizenship}
|
{#if $form.candidate.citizenship === 'Česká republika' || !$form.candidate.citizenship}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ impl MigrationTrait for Migration {
|
||||||
.col(ColumnDef::new(Candidate::SchoolName).string())
|
.col(ColumnDef::new(Candidate::SchoolName).string())
|
||||||
.col(ColumnDef::new(Candidate::HealthInsurance).string())
|
.col(ColumnDef::new(Candidate::HealthInsurance).string())
|
||||||
.col(ColumnDef::new(Candidate::GradesJson).string())
|
.col(ColumnDef::new(Candidate::GradesJson).string())
|
||||||
|
.col(ColumnDef::new(Candidate::TestLanguage).string())
|
||||||
.col(ColumnDef::new(Candidate::EncryptedById).integer())
|
.col(ColumnDef::new(Candidate::EncryptedById).integer())
|
||||||
.col(ColumnDef::new(Candidate::CreatedAt).date_time().not_null())
|
.col(ColumnDef::new(Candidate::CreatedAt).date_time().not_null())
|
||||||
.col(ColumnDef::new(Candidate::UpdatedAt).date_time().not_null())
|
.col(ColumnDef::new(Candidate::UpdatedAt).date_time().not_null())
|
||||||
|
|
@ -65,6 +66,7 @@ pub enum Candidate {
|
||||||
SchoolName,
|
SchoolName,
|
||||||
HealthInsurance,
|
HealthInsurance,
|
||||||
GradesJson,
|
GradesJson,
|
||||||
|
TestLanguage,
|
||||||
EncryptedById,
|
EncryptedById,
|
||||||
CreatedAt,
|
CreatedAt,
|
||||||
UpdatedAt,
|
UpdatedAt,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue