From 7ec6f32e8c4e5359d76f4ef1b8cccef24e7d6b70 Mon Sep 17 00:00:00 2001
From: nicrausaz <n.crausaz99@gmail.com>
Date: Fri, 1 Mar 2019 16:28:08 +0100
Subject: [PATCH] todo: update files

---
 canapEPFL/cible.php                           |   2 +-
 canapEPFL/helpers.php                         | 184 +++++++-----------
 canapEPFL/models/PersonnalData.php            |  25 ++-
 .../formParts/edit/proactivities.php          |   1 +
 .../templates/formParts/edit/responsibles.php |   2 +
 .../templates/formParts/edit/scolarity.php    |   2 +-
 .../templates/formParts/edit/trainings.php    |   1 +
 7 files changed, 98 insertions(+), 119 deletions(-)

diff --git a/canapEPFL/cible.php b/canapEPFL/cible.php
index 807313c..ea370a4 100644
--- a/canapEPFL/cible.php
+++ b/canapEPFL/cible.php
@@ -21,7 +21,7 @@
       if ($validator->isValid()) {
         if (isset($_GET['edit'])) {
           // update data
-          updatePostulation($pdo, $candidateData);
+          updatePostulation($pdo, $candidateData, $_FILES);
         } else {
           // write infos in DB
           $candidateId = insertDataIntoDB($pdo, $candidateData);
diff --git a/canapEPFL/helpers.php b/canapEPFL/helpers.php
index cfece6c..93515cd 100644
--- a/canapEPFL/helpers.php
+++ b/canapEPFL/helpers.php
@@ -316,15 +316,13 @@ function deletePostulation ($pdo, $id, $sciper, $rep1, $rep2) {
   header('Location: viewpostulation.php');
 }
 
-function updatePostulation ($pdo, $posted_data) {
-  // $id, $posted_data, $main_resp_id, $sec_resp_id
-  // echo "editing: $id";
-  echo "<pre>";
-  print_r($posted_data);
+function updatePostulation ($pdo, $posted_data, $posted_files) {
 
-  // update applicant infos
+  // echo "<pre>";
   // print_r($posted_data);
 
+  // update applicant infos
+
   $sqlreq = "UPDATE applicant
 	SET
 		applicant_maturity= :applicant_maturity,
@@ -376,136 +374,96 @@ function updatePostulation ($pdo, $posted_data) {
   $query->bindParam(':applicant_already_applicant_year', $posted_data->anneeCandidature, PDO::PARAM_STR);
   $query->bindParam(':applicant_scolarity_end', $posted_data->anneeFinScolarite, PDO::PARAM_STR);
   $query->bindParam(':applicant_application_updated_date', $datetime_now, PDO::PARAM_STR);
-
-  $query->execute();
-  // die;
-  // update responsibles
-
-  die;
-  $sqlreq = "UPDATE responsible
-	SET
-    responsible_name= :main_responsible_name,
-    responsible_fsname= :main_responsible_fsname,
-	  responsible_gender= :main_responsible_gender,
-		responsible_street= :main_responsible_street,
-		responsible_npa= :main_responsible_npa,
-		responsible_phone= :main_responsible_phone
-  WHERE responsible_id=:main_responsible_id";
-
-  $query = $pdo->prepare($sqlreq);
-  $query->bindParam(':main_responsible_id', $main_resp_id, PDO::PARAM_INT);
-  $query->bindParam(':main_responsible_name', $posted_data['main_responsible_name'], PDO::PARAM_STR);
-  $query->bindParam(':main_responsible_fsname', $posted_data['main_responsible_fsname'], PDO::PARAM_STR);
-  $query->bindParam(':main_responsible_gender', $posted_data['main_responsible_gender'], PDO::PARAM_STR);
-  $query->bindParam(':main_responsible_street', $posted_data['main_responsible_street'], PDO::PARAM_STR);
-  $query->bindParam(':main_responsible_npa', $posted_data['main_responsible_npa'], PDO::PARAM_STR);
-  $query->bindParam(':main_responsible_phone', $posted_data['main_responsible_phone'], PDO::PARAM_STR);
   $query->execute();
 
+  // update responsibles
   $sqlreq = "UPDATE responsible
 	SET
-    responsible_name= :sec_responsible_name,
-    responsible_fsname= :sec_responsible_fsname,
-	  responsible_gender= :sec_responsible_gender,
-		responsible_street= :sec_responsible_street,
-		responsible_npa= :sec_responsible_npa,
-		responsible_phone= :sec_responsible_phone
-  WHERE responsible_id=:sec_responsible_id";
+    responsible_name= :responsible_name,
+    responsible_fsname= :responsible_fsname,
+	  responsible_gender= :responsible_gender,
+		responsible_street= :responsible_street,
+		responsible_npa= :responsible_npa,
+		responsible_phone= :responsible_phone
+  WHERE responsible_id=:responsible_id";
+
+  if (isset($posted_data->representants[0])) {
+    $main_rep = $posted_data->representants[0];
+    $query = $pdo->prepare($sqlreq);
+    $query->bindParam(':responsible_id', $main_rep['id'], PDO::PARAM_INT);
+    $query->bindParam(':responsible_name', $main_rep['nom'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_fsname', $main_rep['prenom'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_gender', $main_rep['genre'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_street', $main_rep['addresse']['rue'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_npa', $main_rep['addresse']['NPA'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_phone', $main_rep['telephone'], PDO::PARAM_STR);
+    $query->execute();
+  }
 
-  $query = $pdo->prepare($sqlreq);
-  $query->bindParam(':sec_responsible_id', $sec_resp_id, PDO::PARAM_INT);
-  $query->bindParam(':sec_responsible_name', $posted_data['sec_responsible_name'], PDO::PARAM_STR);
-  $query->bindParam(':sec_responsible_fsname', $posted_data['sec_responsible_fsname'], PDO::PARAM_STR);
-  $query->bindParam(':sec_responsible_gender', $posted_data['sec_responsible_gender'], PDO::PARAM_STR);
-  $query->bindParam(':sec_responsible_street', $posted_data['sec_responsible_street'], PDO::PARAM_STR);
-  $query->bindParam(':sec_responsible_npa', $posted_data['sec_responsible_npa'], PDO::PARAM_STR);
-  $query->bindParam(':sec_responsible_phone', $posted_data['sec_responsible_phone'], PDO::PARAM_STR);
-  $query->execute();
+  if (isset($posted_data->representants[1])) {
+    $sec_rep = $posted_data->representants[1];
+    $query = $pdo->prepare($sqlreq);
+    $query->bindParam(':responsible_id', $sec_rep['id'], PDO::PARAM_INT);
+    $query->bindParam(':responsible_name', $sec_rep['nom'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_fsname', $sec_rep['prenom'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_gender', $sec_rep['genre'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_street', $sec_rep['addresse']['rue'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_npa', $sec_rep['addresse']['NPA'], PDO::PARAM_STR);
+    $query->bindParam(':responsible_phone', $sec_rep['telephone'], PDO::PARAM_STR);
+    $query->execute();
+  }
 
   // update scolarities
   $sqlreq = "UPDATE scolarity SET scolarity_school=:scolarity_school, scolarity_location=:scolarity_location, scolarity_level=:scolarity_level, scolarity_years=:scolarity_years
   WHERE fk_applicant_id=:applicant_id AND scolarity_id=:scolarity_id";
 
-  if (isset($posted_data['scolarity_id1'])) {
-    // at least one is set
-    for ($i=1; $i <= 5; $i++) {
-      if (isset($posted_data['scolarity_id'. $i])) {
-        // update every existing item
-        $id_school = $posted_data['scolarity_id'. $i];
-        $school = $posted_data['scolarity_school'. $i];
-        $location = $posted_data['scolarity_location' . $i];
-        $level = $posted_data['scolarity_level' . $i];
-        $years = $posted_data['scolarity_years' . $i];
-
-        $query = $pdo->prepare($sqlreq);
-        $query->bindParam(':applicant_id', $id, PDO::PARAM_INT);
-        $query->bindParam(':scolarity_id', $id_school, PDO::PARAM_INT);
-        $query->bindParam(':scolarity_school', $school, PDO::PARAM_STR);
-        $query->bindParam(':scolarity_location', $location, PDO::PARAM_STR);
-        $query->bindParam(':scolarity_level', $level, PDO::PARAM_STR);
-        $query->bindParam(':scolarity_years', $years, PDO::PARAM_STR);
-        $query->execute();
-      } else {
-        break;
-      }
-    }
+  foreach ($posted_data->scolarite as $scolarity) {
+    $query = $pdo->prepare($sqlreq);
+    $query->bindParam(':applicant_id', $posted_data->id, PDO::PARAM_INT);
+    $query->bindParam(':scolarity_id', $scolarity['id'], PDO::PARAM_INT);
+    $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->execute();
   }
 
+  // TODO: si y en a des nouveaux ?
 
   // update pro activities
   $sqlreq = "UPDATE professional_activity SET professional_activity_company=:professional_activity_company, professional_activity_location=:professional_activity_location, professional_activity_activity=:professional_activity_activity, professional_activity_years=:professional_activity_years
   WHERE fk_applicant_id=:applicant_id AND professional_activity_id=:professional_activity_id";
 
-  if (isset($posted_data['professional_activity_id1'])) {
-    // at least one is set
-    for ($i=1; $i <= 3; $i++) {
-      if (isset($posted_data['professional_activity_id'. $i])) {
-        // update every existing item
-        $id_activity = $posted_data['professional_activity_id'. $i];
-        $company = $posted_data['professional_activity_company'. $i];
-        $location = $posted_data['professional_activity_location' . $i];
-        $activity = $posted_data['professional_activity_activity' . $i];
-        $years = $posted_data['professional_activity_years' . $i];
-
-        $query = $pdo->prepare($sqlreq);
-        $query->bindParam(':applicant_id', $id, PDO::PARAM_INT);
-        $query->bindParam(':professional_activity_id', $id_activity, PDO::PARAM_INT);
-        $query->bindParam(':professional_activity_company', $company, PDO::PARAM_STR);
-        $query->bindParam(':professional_activity_location', $location, PDO::PARAM_STR);
-        $query->bindParam(':professional_activity_activity', $activity, PDO::PARAM_STR);
-        $query->bindParam(':professional_activity_years', $years, PDO::PARAM_STR);
-        $query->execute();
-      } else {
-        break;
-      }
-    }
+  foreach ($posted_data->activitesProfessionnelles as $activity) {
+    $query = $pdo->prepare($sqlreq);
+    $query->bindParam(':applicant_id', $posted_data->id, PDO::PARAM_INT);
+    $query->bindParam(':professional_activity_id', $activity['id'], PDO::PARAM_INT);
+    $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->execute();
   }
 
+  // TODO: si y en a des nouveaux ?
+
   // update trainings
   $sqlreq = "UPDATE training SET training_job=:training_job, training_company=:training_company
   WHERE fk_applicant_id=:applicant_id AND training_id=:training_id";
 
-  if (isset($posted_data['training_id1'])) {
-    // at least one is set
-    for ($i=1; $i <= 4; $i++) {
-      if (isset($posted_data['training_id'. $i])) {
-        // update every existing item
-        $id_training = $posted_data['training_id'. $i];
-        $company = $posted_data['training_company'. $i];
-        $job = $posted_data['training_job' . $i];
-
-        $query = $pdo->prepare($sqlreq);
-        $query->bindParam(':applicant_id', $id, PDO::PARAM_INT);
-        $query->bindParam(':training_id', $id_training, PDO::PARAM_INT);
-        $query->bindParam(':training_company', $company, PDO::PARAM_STR);
-        $query->bindParam(':training_job', $job, PDO::PARAM_STR);
-        $query->execute();
-      } else {
-        break;
-      }
-    }
-  }
+foreach ($posted_data->stages as $training) {
+  $query = $pdo->prepare($sqlreq);
+  $query->bindParam(':applicant_id', $posted_data->id, PDO::PARAM_INT);
+  $query->bindParam(':training_id', $training['id'], PDO::PARAM_INT);
+  $query->bindParam(':training_company', $training['metier'], PDO::PARAM_STR);
+  $query->bindParam(':training_job', $training['employeur'], PDO::PARAM_STR);
+  $query->execute();
+}
 
+die;
+
+// TODO: files
+  print_r($posted_files);
   $i = 1;
   while (isset($posted_data['file_id'.$i])) {
     // remplace le fichier sur le serveur
@@ -520,7 +478,7 @@ function updatePostulation ($pdo, $posted_data) {
     }
     $i++;
   }
-  header('Location: viewpostulation.php');
+  // header('Location: viewpostulation.php');
 }
 #endregion
 ?>
\ No newline at end of file
diff --git a/canapEPFL/models/PersonnalData.php b/canapEPFL/models/PersonnalData.php
index bff2aac..4d502e0 100644
--- a/canapEPFL/models/PersonnalData.php
+++ b/canapEPFL/models/PersonnalData.php
@@ -82,32 +82,49 @@ class PersonnalData {
     private function setRepresentants () {
         $rep1 = array("genre"=>$this->postedData['genreRep1'],"nom"=>$this->postedData['nameRep1'],"prenom"=>$this->postedData['surnameRep1'],"addresse"=> array("rue"=>$this->postedData['adrRep1'],"NPA"=>$this->postedData['NPARep1']),"telephone"=>$this->postedData['telRep1']);
         $rep2 = array("genre"=>$this->postedData['genreRep2'],"nom"=>$this->postedData['nameRep2'],"prenom"=>$this->postedData['surnameRep2'],"addresse"=> array("rue"=>$this->postedData['adrRep2'],"NPA"=>$this->postedData['NPARep2']),"telephone"=>$this->postedData['telRep2']);
-
         if ($rep1) {
+            if ($this->postedData['idRep1']) {
+                $rep1['id'] = $this->postedData['idRep1'];
+            }
             array_push($this->representants, $rep1);
         }
         if ($rep2) {
+            if ($this->postedData['idRep2']) {
+                $rep2['id'] = $this->postedData['idRep2'];
+            }
             array_push($this->representants, $rep2);
         }
     }
     private function setScolarite () {
         for ($i = 1; $i <= 5; $i++) {
             if (array_key_exists('ecole'.$i, $this->postedData)) {
-                array_push($this->scolarite, array("ecole"=>$this->postedData['ecole'.$i],"lieu"=>$this->postedData['lieuEcole'.$i],"niveau"=>$this->postedData['niveauEcole'.$i],"annees"=>$this->postedData['anneesEcole'.$i]));
+                if (isset($this->postedData['ecole_id'.$i])) {
+                    array_push($this->scolarite, array("id" => $this->postedData['ecole_id'.$i], "ecole"=>$this->postedData['ecole'.$i],"lieu"=>$this->postedData['lieuEcole'.$i],"niveau"=>$this->postedData['niveauEcole'.$i],"annees"=>$this->postedData['anneesEcole'.$i]));
+                } else {
+                    array_push($this->scolarite, array("ecole"=>$this->postedData['ecole'.$i],"lieu"=>$this->postedData['lieuEcole'.$i],"niveau"=>$this->postedData['niveauEcole'.$i],"annees"=>$this->postedData['anneesEcole'.$i]));
+                }
             }
         }
     }
     private function setActivitesPro () {
         for ($i = 1; $i <= 3; $i++) {
             if (array_key_exists('employeurPro'.$i, $this->postedData)) {
-                array_push($this->activitesProfessionnelles, array("employeur"=>$this->postedData['employeurPro'.$i],"lieu"=>$this->postedData['lieuPro'.$i],"activite"=>$this->postedData['activitePro'.$i],"annees"=>$this->postedData['anneesPro'.$i]));
+                if (isset($this->postedData['pro_id'.$i])) {
+                    array_push($this->activitesProfessionnelles, array("id" => $this->postedData['pro_id'.$i],"employeur"=>$this->postedData['employeurPro'.$i],"lieu"=>$this->postedData['lieuPro'.$i],"activite"=>$this->postedData['activitePro'.$i],"annees"=>$this->postedData['anneesPro'.$i]));
+                } else {
+                    array_push($this->activitesProfessionnelles, array("employeur"=>$this->postedData['employeurPro'.$i],"lieu"=>$this->postedData['lieuPro'.$i],"activite"=>$this->postedData['activitePro'.$i],"annees"=>$this->postedData['anneesPro'.$i]));
+                }
             }
         }
     }
     private function setStages () {
         for ($i = 1; $i <= 4; $i++) {
             if (array_key_exists('activiteStage'.$i, $this->postedData)) {
-                array_push($this->stages,array("metier"=>$this->postedData['activiteStage'.$i],"employeur"=>$this->postedData['entrepriseStage'.$i]));
+                if (isset($this->postedData['stage_id'.$i])) {
+                    array_push($this->stages,array("id" => $this->postedData['stage_id'.$i],"metier"=>$this->postedData['activiteStage'.$i],"employeur"=>$this->postedData['entrepriseStage'.$i]));
+                } else {
+                    array_push($this->stages,array("metier"=>$this->postedData['activiteStage'.$i],"employeur"=>$this->postedData['entrepriseStage'.$i]));
+                }
             }
         }
     }
diff --git a/canapEPFL/templates/formParts/edit/proactivities.php b/canapEPFL/templates/formParts/edit/proactivities.php
index 5d22c4b..86413a0 100644
--- a/canapEPFL/templates/formParts/edit/proactivities.php
+++ b/canapEPFL/templates/formParts/edit/proactivities.php
@@ -10,6 +10,7 @@
   </tr>
   <?php foreach ($proactivities as $key => $activity) { $i = $key + 1; ?>
   <tr>
+  <input type="text" name="pro_id<?= $i ?>" value="<?= $activity['professional_activity_id'] ?>" hidden readonly>
     <td>
       <input type="text" name="employeurPro<?= $i ?>" placeholder="Employeur" class="form-control" value="<?php echo $activity['professional_activity_company'] != '' ? $activity['professional_activity_company'] : ''; ?>" data-required/>
     </td>
diff --git a/canapEPFL/templates/formParts/edit/responsibles.php b/canapEPFL/templates/formParts/edit/responsibles.php
index f7d91c7..de47389 100644
--- a/canapEPFL/templates/formParts/edit/responsibles.php
+++ b/canapEPFL/templates/formParts/edit/responsibles.php
@@ -15,6 +15,7 @@
 
 <div class="form-group" id="representants">
   <p>Représentant principal:*</p>
+  <input name="idRep1" value="<?= $main_resp['responsible_id'] ?>" hidden readonly>
   <label for="genreRep1">Genre *</label>
   <select name="genreRep1" id="genreRep1" class="custom-select">
     <option <?php echo (!isset($main_resp['responsible_gender'])) ? "selected" : ''; ?> disabled> Choisissez un genre</option>
@@ -33,6 +34,7 @@
   <input type="text" name="telRep1" id="telRep1" class="form-control" placeholder="+41 79 123 45 67" value="<?php echo $main_resp['responsible_phone'] != '' ? $main_resp['responsible_phone'] : ''; ?>"/>
 
   <p class="pt-4">Représentant secondaire:</p>
+  <input name="idRep2" value="<?= $sec_resp['responsible_id'] ?>" readonly hidden>
   <label for="genreRep2">Genre</label>
   <select name="genreRep2" id="genreRep2" class="custom-select">
     <option <?php echo (!isset($sec_resp['responsible_gender'])) ? "selected" : ''; ?> disabled> Choisissez un genre</option>
diff --git a/canapEPFL/templates/formParts/edit/scolarity.php b/canapEPFL/templates/formParts/edit/scolarity.php
index 0f26afc..51c9c0b 100644
--- a/canapEPFL/templates/formParts/edit/scolarity.php
+++ b/canapEPFL/templates/formParts/edit/scolarity.php
@@ -10,6 +10,7 @@
   </tr>
 <?php foreach ($scolarites as $key => $scolarity) { $i = $key + 1; ?>
   <tr>
+    <input type="text" name="ecole_id<?= $i ?>" value="<?= $scolarity['scolarity_id'] ?>" hidden readonly>
     <td>
       <input type="text" name="ecole<?= $i ?>" placeholder="Ecole *" class="form-control" value="<?php echo $scolarity['scolarity_school'] != '' ? $scolarity['scolarity_school'] : ''; ?>" data-required/>
     </td>
@@ -25,7 +26,6 @@
   </tr>
   <?php } ?>
 </table>
-<!-- TODO: check ça passe de 3 a 5 -->
 <button type="button" class="btn btn-primary btn-sm mt-3 mb-2" id="addSch">Ajouter une ligne</button>
 
 <div class="form-group mt-3">
diff --git a/canapEPFL/templates/formParts/edit/trainings.php b/canapEPFL/templates/formParts/edit/trainings.php
index bb9d8ec..a3d057c 100644
--- a/canapEPFL/templates/formParts/edit/trainings.php
+++ b/canapEPFL/templates/formParts/edit/trainings.php
@@ -8,6 +8,7 @@
   </tr>
   <?php foreach ($trainings as $key => $training) { $i = $key + 1; ?>
   <tr>
+    <input type="text" name="stage_id<?= $i ?>" value="<?= $training['training_id'] ?>" hidden readonly>
     <td>
       <input type="text" class="form-control" name="activiteStage<?php echo $i ?>" placeholder="Métier" value="<?= $training['training_job'] ?>" >
     </td>
-- 
GitLab