From c230154d995b8e0f5bd14b58d5b58442ccf7a6e5 Mon Sep 17 00:00:00 2001 From: Sebastian Pravda Date: Sun, 5 Feb 2023 18:05:30 +0100 Subject: [PATCH] feat: personalIdNumber & relatedApplications in list_applications --- core/src/database/query/application.rs | 2 +- core/src/models/application.rs | 11 ++++++++--- core/src/services/application_service.rs | 6 ++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/src/database/query/application.rs b/core/src/database/query/application.rs index dde822f..95705de 100644 --- a/core/src/database/query/application.rs +++ b/core/src/database/query/application.rs @@ -6,7 +6,7 @@ const PAGE_SIZE: u64 = 20; #[derive(FromQueryResult, Clone)] pub struct ApplicationCandidateJoin { pub application_id: i32, - // pub personal_id_number: String, + pub personal_id_number: String, pub candidate_id: i32, pub name: Option, pub surname: Option, diff --git a/core/src/models/application.rs b/core/src/models/application.rs index a495437..a4b436b 100644 --- a/core/src/models/application.rs +++ b/core/src/models/application.rs @@ -8,8 +8,9 @@ use super::candidate_details::EncryptedString; #[serde(rename_all = "camelCase")] pub struct ApplicationResponse { pub application_id: i32, - // pub personal_id_number: String, pub candidate_id: i32, + pub related_applications: Vec, + pub personal_id_number: String, pub name: String, pub surname: String, pub email: String, @@ -20,8 +21,10 @@ pub struct ApplicationResponse { impl ApplicationResponse { pub async fn from_encrypted( private_key: &String, - c: ApplicationCandidateJoin + c: ApplicationCandidateJoin, + related_applications: Vec, ) -> Result { + let personal_id_number = EncryptedString::from(c.personal_id_number.to_owned()).decrypt(private_key).await?; let name = EncryptedString::decrypt_option(&EncryptedString::try_from(&c.name).ok(), private_key).await?; let surname = EncryptedString::decrypt_option(&EncryptedString::try_from(&c.surname).ok(), private_key).await?; let email = EncryptedString::decrypt_option(&EncryptedString::try_from(&c.email).ok(), private_key).await?; @@ -29,11 +32,13 @@ impl ApplicationResponse { Ok( Self { application_id: c.application_id, + candidate_id: c.candidate_id, + related_applications, + personal_id_number, name: name.unwrap_or_default(), surname: surname.unwrap_or_default(), email: email.unwrap_or_default(), telephone: telephone.unwrap_or_default(), - candidate_id: c.candidate_id, field_of_study: c.field_of_study, } ) diff --git a/core/src/services/application_service.rs b/core/src/services/application_service.rs index 912a0f4..0176dae 100644 --- a/core/src/services/application_service.rs +++ b/core/src/services/application_service.rs @@ -267,7 +267,6 @@ impl ApplicationService { db: &DbConn, field_of_study: Option, page: Option, - ) -> Result, ServiceError> { let applications = Query::list_applications(db, field_of_study, page).await?; @@ -275,9 +274,12 @@ impl ApplicationService { applications .iter() .map(|c| async move { + let related_applications = Query::find_applications_by_candidate_id(db, c.candidate_id).await?.iter() + .map(|a| a.id).collect(); ApplicationResponse::from_encrypted( private_key, - c.to_owned() + c.to_owned(), + related_applications, ).await }) ).await