feat: personalIdNumber & relatedApplications in list_applications

This commit is contained in:
Sebastian Pravda 2023-02-05 18:05:30 +01:00
parent dce07ce2cb
commit c230154d99
No known key found for this signature in database
GPG key ID: F3BC84F08EFA3F57
3 changed files with 13 additions and 6 deletions

View file

@ -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<String>,
pub surname: Option<String>,

View file

@ -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<i32>,
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<i32>,
) -> Result<Self, ServiceError> {
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,
}
)

View file

@ -267,7 +267,6 @@ impl ApplicationService {
db: &DbConn,
field_of_study: Option<String>,
page: Option<u64>,
) -> Result<Vec<ApplicationResponse>, 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