From 0ea31a5966d8c482f4a3dbc12f34b079ecbd3792 Mon Sep 17 00:00:00 2001
From: nicrausaz <n.crausaz99@gmail.com>
Date: Wed, 21 Nov 2018 14:53:27 +0100
Subject: [PATCH] base insert working

---
 canapEPFL/.gitignore                        |   3 +-
 canapEPFL/cible.php                         |  16 ++-
 canapEPFL/configs/db.template.php           |   5 +
 canapEPFL/form.php                          |   2 +-
 canapEPFL/helpers.php                       | 123 ++++++++++++++------
 canapEPFL/models/PersonnalData.php          |  25 ++--
 canapEPFL/models/PersonnalDataValidator.php |  10 +-
 canapEPFL/templates/head.php                |   1 +
 8 files changed, 126 insertions(+), 59 deletions(-)
 create mode 100644 canapEPFL/configs/db.template.php

diff --git a/canapEPFL/.gitignore b/canapEPFL/.gitignore
index 79518b6..08d3a0c 100644
--- a/canapEPFL/.gitignore
+++ b/canapEPFL/.gitignore
@@ -2,4 +2,5 @@ aspnet_client/
 .user.ini
 robots.txt
 web.config
-ndphpinfo.php
\ No newline at end of file
+ndphpinfo.php
+configs/db.php
\ No newline at end of file
diff --git a/canapEPFL/cible.php b/canapEPFL/cible.php
index f213b4c..b6fb12f 100644
--- a/canapEPFL/cible.php
+++ b/canapEPFL/cible.php
@@ -26,14 +26,20 @@
         // Create JSON file and upload it
         $encodedJson = (json_encode($candidateData,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));
         file_put_contents($candidateData->getPaths()["pathInfos"].'/informations.json', $encodedJson);
+
+        // write in DB
+        insertDataIntoDB($pdo, $candidateData);
+
         // Send mails
 
-        mailToResp($candidateData->prenomApprenti, $candidateData->nomApprenti, $candidateData->formation);
-        mailToApprenti($candidateData->mailApprenti, $candidateData->formation);
+        // mailToResp($candidateData->prenomApprenti, $candidateData->nomApprenti, $candidateData->formation);
+        // mailToApprenti($candidateData->mailApprenti, $candidateData->formation);
+
         // kill session
-        $_SESSION['formError'] = false;
-        unset($_SESSION);
-        include("templates/confirmationText.php");
+        // $_SESSION['formError'] = false;
+        // unset($_SESSION);
+        // include("templates/confirmationText.php");
+        echo "done";
       } else {
         $_SESSION['formError'] = true;
         $_SESSION['postedForm'] = $_POST;
diff --git a/canapEPFL/configs/db.template.php b/canapEPFL/configs/db.template.php
new file mode 100644
index 0000000..710498f
--- /dev/null
+++ b/canapEPFL/configs/db.template.php
@@ -0,0 +1,5 @@
+<?php
+  $db_user = '';
+  $db_pass = '';
+  $pdo = new PDO('mysql:host=localhost;dbname=canap_dev', $db_user, $db_pass);
+?>
\ No newline at end of file
diff --git a/canapEPFL/form.php b/canapEPFL/form.php
index 935f921..512f78f 100644
--- a/canapEPFL/form.php
+++ b/canapEPFL/form.php
@@ -459,7 +459,7 @@
       if ($_SESSION['formError']) {
         echo "<script>showOnFormReturn(lieu);</script>";
       }
-      // require_once('templates/footer.php'); (debug du $_POST)
+      // require_once('templates/footer.php'); // (debug du $_POST)
     ?>
   </body>
 </html>
\ No newline at end of file
diff --git a/canapEPFL/helpers.php b/canapEPFL/helpers.php
index 3d6341e..6ecdb4c 100644
--- a/canapEPFL/helpers.php
+++ b/canapEPFL/helpers.php
@@ -1,63 +1,116 @@
 <?php
 function mailToResp($surname, $name, $job){
-    require_once("templates/mailToResp.php");
-    mail($to, $subject, $message, $headers);
+  require_once("templates/mailToResp.php");
+  mail($to, $subject, $message, $headers);
 }
 
-//vire les accents et remplace caractere non alphanumeric par '-'
+// vire les accents et remplace caractere non alphanumeric par '-'
 function checkChars ($toCheck) {
-    $toCheck = strtr($toCheck,
-    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
-    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
-    $toCheck = preg_replace('/([^.a-z0-9]+)/i', '-', $toCheck);
-    return $toCheck;
+  $toCheck = strtr($toCheck,
+  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
+  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
+  $toCheck = preg_replace('/([^.a-z0-9]+)/i', '-', $toCheck);
+  return $toCheck;
 }
 
 function mailToApprenti($to, $job){
-    require_once("templates/mailToApp.php");
-    mail($to, $subject, $message, $headers);
+  require_once("templates/mailToApp.php");
+  mail($to, $subject, $message, $headers);
 }
 
 function uploadFile(&$candidateData, $pathAnnexes, $file, $name){
-    $extension = strtolower(strrchr($file['name'], '.'));
-    $file['name'] = $name . $extension;
-    move_uploaded_file($file['tmp_name'], $pathAnnexes . $file['name']);
-    $candidateData->fichiers[$name] = $file['name'];
+  $extension = strtolower(strrchr($file['name'], '.'));
+  $file['name'] = $name . $extension;
+  move_uploaded_file($file['tmp_name'], $pathAnnexes . $file['name']);
+  $candidateData->fichiers[$name] = $file['name'];
 }
 
 //Crée le dossier principal est ses 2 sous-dossiers
 function createCandidateFolders($candidateData){
     $paths = $candidateData->getPaths();
     if (!mkdir($paths["pathInfos"], 0777, true)){
-        die('Echec lors de la création du dossier informations');
+      die('Echec lors de la création du dossier informations');
     }
     if (!mkdir($paths["pathAnnexes"], 0777, true)){
-        die('Echec lors de la création du dossier annexes');
+      die('Echec lors de la création du dossier annexes');
     }
 }
 
 function uploadAllFiles($pathAnnexes, $postedFiles, $candidateData){
-    uploadFile($candidateData, $pathAnnexes, $postedFiles['photo'], "photo-passeport");
-    uploadFile($candidateData, $pathAnnexes, $postedFiles['idCard'], "carte-identite");
-    uploadFile($candidateData, $pathAnnexes, $postedFiles['cv'], "curriculum-vitae");
-    uploadFile($candidateData, $pathAnnexes, $postedFiles['lettre'], "lettre-motivation");
-
-    for ($i = 1; $i <= 9; $i++){
-        if (array_key_exists('certifs'.$i, $postedFiles)){
-            if (!($postedFiles['certifs'.$i]['name'] == "")) {
-                uploadFile($candidateData, $pathAnnexes, $postedFiles['certifs'.$i], "annexe".$i);
-            }
-        }
-    }
+  uploadFile($candidateData, $pathAnnexes, $postedFiles['photo'], "photo-passeport");
+  uploadFile($candidateData, $pathAnnexes, $postedFiles['idCard'], "carte-identite");
+  uploadFile($candidateData, $pathAnnexes, $postedFiles['cv'], "curriculum-vitae");
+  uploadFile($candidateData, $pathAnnexes, $postedFiles['lettre'], "lettre-motivation");
 
-    if($candidateData->formation=="polyMecanicien" && isset($postedFiles['gimch'])){
-        uploadFile($candidateData, $pathAnnexes, $postedFiles['gimch'], "certificat-gimch");
-    }
-    if($candidateData->formation=="informaticien" && isset($postedFiles['griTestInput'])){
-        uploadFile($candidateData, $pathAnnexes, $postedFiles['griTestInput'], "certificat-gri");
+  for ($i = 1; $i <= 9; $i++){
+    if (array_key_exists('certifs'.$i, $postedFiles)){
+      if (!($postedFiles['certifs'.$i]['name'] == "")) {
+        uploadFile($candidateData, $pathAnnexes, $postedFiles['certifs'.$i], "annexe".$i);
+      }
     }
+  }
+
+  if($candidateData->formation=="polyMecanicien" && isset($postedFiles['gimch'])){
+    uploadFile($candidateData, $pathAnnexes, $postedFiles['gimch'], "certificat-gimch");
+  }
+  if($candidateData->formation=="informaticien" && isset($postedFiles['griTestInput'])){
+    uploadFile($candidateData, $pathAnnexes, $postedFiles['griTestInput'], "certificat-gri");
+  }
+
+  unset($candidateData->tmp_fichiers);
+  return $candidateData;
+}
+
+function insertDataIntoDB ($pdo, $candidateData) {
+  echo "<pre>";
+  print_r($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);
+
+  $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);
+
+  try {
+    $query->execute();
+  } catch(Exception $e) {
+    echo $e;
+  }
+
+
+  // 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);
 
-    unset($candidateData->tmp_fichiers);
-    return $candidateData;
+  // files
 }
 ?>
\ No newline at end of file
diff --git a/canapEPFL/models/PersonnalData.php b/canapEPFL/models/PersonnalData.php
index d1ccfd1..7233d09 100644
--- a/canapEPFL/models/PersonnalData.php
+++ b/canapEPFL/models/PersonnalData.php
@@ -17,11 +17,11 @@ class PersonnalData {
     "interactiveMediaDesigner" => "InteractiveMediaDesigners"
     );
     private $dateNow;
-    private $rootpath = '\\\\scxdata\\apprentis$\\candidatures\\nouvelles\\';
+    private $rootpath = 'D:/formdata/'; // \\\\scxdata\\apprentis$\\candidatures\\nouvelles\\
     public $formation = "";
     public $lieu = "";
     public $filiere = "";
-    public $maturite = "false";
+    public $maturite = 0;
     public $genreApprenti = "";
     public $nomApprenti = "";
     public $prenomApprenti  = "";
@@ -36,13 +36,13 @@ class PersonnalData {
     public $numeroAVS = "";
     public $langueMaternelleApprenti = "";
     public $connaissancesLinguistiques = "";
-    public $majeur = "false";
+    public $majeur = 0;
     public $representants = [];
     public $scolarite = [];
     public $anneeFinScolarite;
     public $activitesProfessionnelles = [];
     public $stages = [];
-    public $dejaCandidat = "false";
+    public $dejaCandidat = 0;
     public $anneeCandidature = "";
     public $datePostulation = "";
     public $fichiers = [];
@@ -57,7 +57,7 @@ class PersonnalData {
         if($this->formation =="informaticien"){
             $this->filiere = $postedData['filInfo'];
         }
-        $this->maturite = $postedData['mpt'];
+        $this->maturite = $postedData['mpt'] == true;
         $this->genreApprenti = $postedData['genreApp'];
         $this->nomApprenti = $postedData['nameApp'];
         $this->prenomApprenti = $postedData['surnameApp'];
@@ -65,14 +65,14 @@ class PersonnalData {
         $this->telFixeApprenti  = $postedData['telApp'];
         $this->telMobileApprenti  = $postedData['phoneApp'];
         $this->mailApprenti = $postedData['mailApp'];
-        $this->dateNaissanceApprenti = $postedData['birthApp'];
+        $this->dateNaissanceApprenti = date('Y-m-d', strtotime($postedData['birthApp']));
         $this->origineApprenti = $postedData['originApp'];
         $this->nationaliteApprenti = $postedData['nationApp'];
         $this->permisEtranger = $postedData['permisEtrangerApp'];
         $this->numeroAVS = $postedData['avsNumber'];
         $this->langueMaternelleApprenti = $postedData['langApp'];
         $this->setLanguages($postedData['languesApp']);
-        $this->majeur = $postedData['maj'];
+        $this->majeur = $postedData['maj'] == true;
         if($this->majeur == "false"){
             $this->setRepresentants();
         }
@@ -117,9 +117,9 @@ class PersonnalData {
             }
         }
     }
-    private function setDejacand(){
-        $this->dejaCandidat = $this->postedData['dejaCand'];
-        if($this->postedData['dejaCand'] == "true"){
+    private function setDejacand () {
+        $this->dejaCandidat = $this->postedData['dejaCand'] == true;
+        if ($this->dejaCandidat) {
             $this->anneeCandidature = $this->postedData['dejaCandAnnee'];
         }
     }
@@ -141,14 +141,15 @@ class PersonnalData {
         return $postedFiles;
     }
 
-    public function getPaths(){
+    public function getPaths () {
         $folderName = $this->dateNow."_".$this->mailApprenti;
         $path = $this->rootpath.$this->formations[$this->formation].'/'.$folderName.'/';
         $pathInfos = $path."informations/";
         $pathAnnexes = $path."annexes/";
         return ["pathInfos"=>$pathInfos, "pathAnnexes"=>$pathAnnexes, "path"=> $path];
     }
-    public function getFormations(){
+
+    public function getFormations () {
         return $this->formations;
     }
 }
diff --git a/canapEPFL/models/PersonnalDataValidator.php b/canapEPFL/models/PersonnalDataValidator.php
index 17b4274..8661e29 100644
--- a/canapEPFL/models/PersonnalDataValidator.php
+++ b/canapEPFL/models/PersonnalDataValidator.php
@@ -94,11 +94,11 @@ class PersonnalDataValidator {
             }
         }
     }
-    private function dejaCandValid(){
-        if($this->personnalData->dejaCandidat == 'true'){
-            if($this->personnalData->anneeCandidature == ""){
+    private function dejaCandValid () {
+        if ($this->personnalData->dejaCandidat) {
+            if ($this->personnalData->anneeCandidature == "") {
                 $this->errors['anneeCandidature'] = 'Année de candidature non valide';
-            }else if(!is_numeric($this->personnalData->anneeCandidature)){
+            } else if (!is_numeric($this->personnalData->anneeCandidature)) {
                 $this->errors['anneeCandidature'] = 'Année de candidature non valide';
             }
         }
@@ -114,7 +114,7 @@ class PersonnalDataValidator {
         }
     }
     private function isEcoleValid(){
-        if(count($this->personnalData->scolarite)< 2){
+        if(count($this->personnalData->scolarite) < 2){
             $this->errors['ecole'] = 'Informations école non valides';
         }
     }
diff --git a/canapEPFL/templates/head.php b/canapEPFL/templates/head.php
index 45dbb9d..560b2c8 100644
--- a/canapEPFL/templates/head.php
+++ b/canapEPFL/templates/head.php
@@ -18,5 +18,6 @@
   error_reporting(0);
   // ini_set("display_errors", 1);
   // error_reporting(E_ALL);
+  require('configs/db.php');
   session_start();
 ?>
\ No newline at end of file
-- 
GitLab