From 0b63f86f22d55fb4ef7976bffe63ded879ebd5f4 Mon Sep 17 00:00:00 2001
From: nicrausaz <n.crausaz99@gmail.com>
Date: Thu, 22 Nov 2018 15:10:16 +0100
Subject: [PATCH] insert scolarity, stage & pro

---
 canapEPFL/README.md   |   5 +-
 canapEPFL/helpers.php | 134 +++++++++++++++++++++++++++++-------------
 2 files changed, 95 insertions(+), 44 deletions(-)

diff --git a/canapEPFL/README.md b/canapEPFL/README.md
index a9700e1..3ad1ff3 100644
--- a/canapEPFL/README.md
+++ b/canapEPFL/README.md
@@ -1,10 +1,9 @@
 # Améliorations en cours
-- [ ] Utiliser la nouvelle charte 2018
+- [x] Utiliser la nouvelle charte 2018
 - [ ] Adapter pour ajouter les postulations dans une DB
+- [ ] Commentaires et section du code
 
 # Améliorations possibles du formulaire canap.epfl.ch
-- [ ] Fusionner les annexes en une seul PDF
-- [ ] Postulation pour les dossiers papiers pour les dossiers recu par courrier
 
 # Infos
 > Ouvrir la postulation dans templates/isPostulationOpen.php
diff --git a/canapEPFL/helpers.php b/canapEPFL/helpers.php
index 29ba5af..f331e21 100644
--- a/canapEPFL/helpers.php
+++ b/canapEPFL/helpers.php
@@ -61,19 +61,61 @@ function uploadAllFiles($pathAnnexes, $postedFiles, $candidateData){
   return $candidateData;
 }
 
+#region [DB Interactions]
 function insertDataIntoDB ($pdo, $candidateData) {
   echo "<pre>";
   print_r($candidateData);
   $id = insertPersonalInfos($pdo, $candidateData);
 
   insertResponsibles($pdo, $candidateData->representants, $id);
+  insertScolarities($pdo, $candidateData->scolarite, $id);
+  insertProActivities($pdo, $candidateData->activitesProfessionnelles, $id);
+  insertTrainings ($pdo, $candidateData->stages, $id);
+}
+
+function insertPersonalInfos ($pdo, $candidateData) {
+  $sqlreq = "INSERT INTO applicant
+	(applicant_formation, applicant_it_section, applicant_formation_location, applicant_maturity, applicant_gender, applicant_name, applicant_fsname, applicant_address_street, applicant_address_npa, applicant_home_phone, applicant_personal_phone, applicant_mail, applicant_birthdate, applicant_origin, applicant_nationality, applicant_foreign_authorization, applicant_avs, applicant_main_language, applicant_speaks_french, applicant_speaks_german, applicant_speaks_english, applicant_speaks_other, applicant_has_majority, applicant_scolarity_end, applicant_already_applicant, applicant_already_applicant_year, applicant_application_date, applicant_application_status, fk_applicant_main_responsible, fk_applicant_sec_responsible)
+  VALUES (:applicant_formation, :applicant_it_section, :applicant_formation_location, :applicant_maturity, :applicant_gender, :applicant_name, :applicant_fsname, :applicant_address_street, :applicant_address_npa, :applicant_home_phone, :applicant_personal_phone, :applicant_mail, :applicant_birthdate, :applicant_origin, :applicant_nationality, :applicant_foreign_authorization, :applicant_avs, :applicant_main_language, :applicant_speaks_french, :applicant_speaks_german, :applicant_speaks_english, :applicant_speaks_other, :applicant_has_majority, :applicant_scolarity_end, :applicant_already_applicant, :applicant_already_applicant_year, NOW(), 'new', null, null)";
+
+  $query = $pdo->prepare($sqlreq);
+  $query->bindParam(':applicant_formation', $candidateData->formation, PDO::PARAM_STR);
+  $query->bindParam(':applicant_it_section', $candidateData->filiere, PDO::PARAM_STR);
+  $query->bindParam(':applicant_formation_location', $candidateData->lieu, PDO::PARAM_STR);
+  $query->bindParam(':applicant_maturity', $candidateData->maturite, PDO::PARAM_BOOL);
+  $query->bindParam(':applicant_gender', $candidateData->genreApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_name', $candidateData->nomApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_fsname', $candidateData->prenomApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_address_street', $candidateData->addresseApprentiComplete['rue'], PDO::PARAM_STR);
+  $query->bindParam(':applicant_address_npa', $candidateData->addresseApprentiComplete['NPA'], PDO::PARAM_STR);
+  $query->bindParam(':applicant_home_phone', $candidateData->telFixeApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_personal_phone', $candidateData->telMobileApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_mail', $candidateData->mailApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_birthdate', $candidateData->dateNaissanceApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_origin', $candidateData->origineApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_nationality', $candidateData->nationaliteApprenti, PDO::PARAM_STR);
+  $query->bindParam(':applicant_foreign_authorization', $candidateData->permisEtranger, PDO::PARAM_STR);
+  $query->bindParam(':applicant_avs', $candidateData->numeroAVS, PDO::PARAM_STR);
+  $query->bindParam(':applicant_main_language', $candidateData->langueMaternelleApprenti, PDO::PARAM_STR);
+
+  // languages
+  $speaks_fr = in_array("fr", $candidateData->connaissancesLinguistiques);
+  $speaks_de = in_array("de", $candidateData->connaissancesLinguistiques);
+  $speaks_en = in_array("en", $candidateData->connaissancesLinguistiques);
+  $speaks_other = in_array("others", $candidateData->connaissancesLinguistiques);
+
+  $query->bindParam(':applicant_speaks_french', $speaks_fr, PDO::PARAM_BOOL);
+  $query->bindParam(':applicant_speaks_german', $speaks_de, PDO::PARAM_BOOL);
+  $query->bindParam(':applicant_speaks_english', $speaks_en, PDO::PARAM_BOOL);
+  $query->bindParam(':applicant_speaks_other', $speaks_other, PDO::PARAM_BOOL);
 
-  // create reponsable then
-  // responsables
-  // $pdo->bindParam(':fk_applicant_main_responsible', $candidateData->$job, PDO::PARAM_STR);
-  // $pdo->bindParam(':fk_applicant_sec_responsible', $candidateData->$job, PDO::PARAM_STR);
+  $query->bindParam(':applicant_has_majority', $candidateData->majeur, PDO::PARAM_BOOL);
+  $query->bindParam(':applicant_scolarity_end', $candidateData->anneeFinScolarite, PDO::PARAM_STR);
+  $query->bindParam(':applicant_already_applicant', $candidateData->dejaCandidat, PDO::PARAM_BOOL);
+  $query->bindParam(':applicant_already_applicant_year', $candidateData->anneeCandidature, PDO::PARAM_STR);
 
-  // files
+  $query->execute();
+  return $pdo->lastInsertId();
 }
 
 function insertResponsibles ($pdo, $representants, $applicantId) {
@@ -108,43 +150,53 @@ function insertResponsibles ($pdo, $representants, $applicantId) {
   $query->execute();
 }
 
-function insertPersonalInfos ($pdo, $candidateData) {
-  $sqlreq = "INSERT INTO applicant
-	(applicant_formation, applicant_it_section, applicant_formation_location, applicant_maturity, applicant_gender, applicant_name, applicant_fsname, applicant_address_street, applicant_address_npa, applicant_home_phone, applicant_personal_phone, applicant_mail, applicant_birthdate, applicant_origin, applicant_nationality, applicant_foreign_authorization, applicant_avs, applicant_main_language, applicant_speaks_french, applicant_speaks_german, applicant_speaks_english, applicant_speaks_other, applicant_has_majority, applicant_scolarity_end, applicant_already_applicant, applicant_already_applicant_year, applicant_application_date, applicant_application_status, fk_applicant_main_responsible, fk_applicant_sec_responsible)
-  VALUES (:applicant_formation, :applicant_it_section, :applicant_formation_location, :applicant_maturity, :applicant_gender, :applicant_name, :applicant_fsname, :applicant_address_street, :applicant_address_npa, :applicant_home_phone, :applicant_personal_phone, :applicant_mail, :applicant_birthdate, :applicant_origin, :applicant_nationality, :applicant_foreign_authorization, :applicant_avs, :applicant_main_language, :applicant_speaks_french, :applicant_speaks_german, :applicant_speaks_english, :applicant_speaks_other, :applicant_has_majority, :applicant_scolarity_end, :applicant_already_applicant, :applicant_already_applicant_year, NOW(), 'new', null, null)";
-  // :fk_applicant_main_responsible, :fk_applicant_sec_responsible
-
-  $query = $pdo->prepare($sqlreq);
-  $query->bindParam(':applicant_formation', $candidateData->formation, PDO::PARAM_STR);
-  $query->bindParam(':applicant_it_section', $candidateData->filiere, PDO::PARAM_STR);
-  $query->bindParam(':applicant_formation_location', $candidateData->lieu, PDO::PARAM_STR);
-  $query->bindParam(':applicant_maturity', $candidateData->maturite, PDO::PARAM_BOOL);
-  $query->bindParam(':applicant_gender', $candidateData->genreApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_name', $candidateData->nomApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_fsname', $candidateData->prenomApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_address_street', $candidateData->addresseApprentiComplete['rue'], PDO::PARAM_STR);
-  $query->bindParam(':applicant_address_npa', $candidateData->addresseApprentiComplete['NPA'], PDO::PARAM_STR);
-  $query->bindParam(':applicant_home_phone', $candidateData->telFixeApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_personal_phone', $candidateData->telMobileApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_mail', $candidateData->mailApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_birthdate', $candidateData->dateNaissanceApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_origin', $candidateData->origineApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_nationality', $candidateData->nationaliteApprenti, PDO::PARAM_STR);
-  $query->bindParam(':applicant_foreign_authorization', $candidateData->permisEtranger, PDO::PARAM_STR);
-  $query->bindParam(':applicant_avs', $candidateData->numeroAVS, PDO::PARAM_STR);
-  $query->bindParam(':applicant_main_language', $candidateData->langueMaternelleApprenti, PDO::PARAM_STR);
-
-  $query->bindParam(':applicant_speaks_french', $test, PDO::PARAM_BOOL);
-  $query->bindParam(':applicant_speaks_german', $test, PDO::PARAM_BOOL);
-  $query->bindParam(':applicant_speaks_english', $test, PDO::PARAM_BOOL);
-  $query->bindParam(':applicant_speaks_other', $test, PDO::PARAM_BOOL);
+function insertScolarities ($pdo, $scolarities, $applicantId) {
+  // insert scolarities
+  $sqlreq = "INSERT INTO scolarity (scolarity_school, scolarity_location, scolarity_level, scolarity_years, applicant_applicant_id)
+    VALUES (:scolarity_school, :scolarity_location, :scolarity_level, :scolarity_years, :applicant_applicant_id)";
+  foreach ($scolarities as $scolarity) {
+    if ($scolarity['ecole'] != '') {
+      $query = $pdo->prepare($sqlreq);
+      $query->bindParam(':scolarity_school', $scolarity['ecole'], PDO::PARAM_STR);
+      $query->bindParam(':scolarity_location', $scolarity['lieu'], PDO::PARAM_STR);
+      $query->bindParam(':scolarity_level', $scolarity['niveau'], PDO::PARAM_STR);
+      $query->bindParam(':scolarity_years', $scolarity['annees'], PDO::PARAM_STR);
+      $query->bindParam(':applicant_applicant_id', $applicantId, PDO::PARAM_INT);
+      $query->execute();
+    }
+  }
+}
 
-  $query->bindParam(':applicant_has_majority', $candidateData->majeur, PDO::PARAM_BOOL);
-  $query->bindParam(':applicant_scolarity_end', $candidateData->anneeFinScolarite, PDO::PARAM_STR);
-  $query->bindParam(':applicant_already_applicant', $candidateData->dejaCandidat, PDO::PARAM_BOOL);
-  $query->bindParam(':applicant_already_applicant_year', $candidateData->anneeCandidature, PDO::PARAM_STR);
+function insertProActivities ($pdo, $activities, $applicantId) {
+  // insert professionnal activities
+  $sqlreq = "INSERT INTO professional_activity (professional_activity_company, professional_activity_location, professional_activity_activity, professional_activity_years, applicant_applicant_id)
+    VALUES (:professional_activity_company, :professional_activity_location, :professional_activity_activity, :professional_activity_years, :applicant_applicant_id)";
+  foreach ($activities as $activity) {
+    if ($activity['employeur'] != '') {
+      $query = $pdo->prepare($sqlreq);
+      $query->bindParam(':professional_activity_company', $activity['employeur'], PDO::PARAM_STR);
+      $query->bindParam(':professional_activity_location', $activity['lieu'], PDO::PARAM_STR);
+      $query->bindParam(':professional_activity_activity', $activity['activite'], PDO::PARAM_STR);
+      $query->bindParam(':professional_activity_years', $activity['annees'], PDO::PARAM_STR);
+      $query->bindParam(':applicant_applicant_id', $applicantId, PDO::PARAM_INT);
+      $query->execute();
+    }
+  }
+}
 
-  $query->execute();
-  return $pdo->lastInsertId();
+function insertTrainings ($pdo, $trainings, $applicantId) {
+  // insert training / stages
+  $sqlreq = "INSERT INTO training (training_job, training_company, applicant_applicant_id)
+    VALUES (:training_job, :training_company, :applicant_applicant_id)";
+  foreach ($trainings as $training) {
+    if ($training['metier'] != '') {
+      $query = $pdo->prepare($sqlreq);
+      $query->bindParam(':training_job', $training['metier'], PDO::PARAM_STR);
+      $query->bindParam(':training_company', $training['employeur'], PDO::PARAM_STR);
+      $query->bindParam(':applicant_applicant_id', $applicantId, PDO::PARAM_INT);
+      $query->execute();
+    }
+  }
 }
+#endregion
 ?>
\ No newline at end of file
-- 
GitLab