Skip to content
Snippets Groups Projects
helpers.php 18.6 KiB
Newer Older
nicrausaz's avatar
nicrausaz committed
<?php
nicrausaz's avatar
nicrausaz committed
#region [Mail Sendings]
nicrausaz's avatar
nicrausaz committed
function mailToResp($surname, $name, $job){
nicrausaz's avatar
nicrausaz committed
  require_once("templates/mails/mailToResp.php");
nicrausaz's avatar
nicrausaz committed
  mail($to, $subject, $message, $headers);
nicrausaz's avatar
nicrausaz committed
}

function mailToApprenti($to, $job){
nicrausaz's avatar
nicrausaz committed
  require_once("templates/mails/mailToApp.php");
nicrausaz's avatar
nicrausaz committed
  mail($to, $subject, $message, $headers);
nicrausaz's avatar
nicrausaz committed
}
nicrausaz's avatar
nicrausaz committed
#endregion
nicrausaz's avatar
nicrausaz committed

nicrausaz's avatar
nicrausaz committed
#region [Folder & Files]
nicrausaz's avatar
nicrausaz committed
// Crée le dossier annexes
function createFilesFolder ($rootpath, $applicantId) {
  $path = $rootpath . $applicantId . "/";
  if (!mkdir($path, 0777, true)) {
    die('Echec lors de la création du dossier');
  }
  return $path;
nicrausaz's avatar
nicrausaz committed
}

function uploadFile(&$candidateData, $pathAnnexes, $file, $key, $name){
  $extension = strtolower(strrchr($file['name'], '.'));
  $file['name'] = $name . $extension;
  move_uploaded_file($file['tmp_name'], $pathAnnexes . $file['name']);
  $candidateData->fichiers[$name] = $file['name'];
  unset($candidateData->fichiers[$key]);
}

nicrausaz's avatar
nicrausaz committed
function uploadAllFiles($pathAnnexes, $postedFiles, $candidateData){
nicrausaz's avatar
nicrausaz committed
  uploadFile($candidateData, $pathAnnexes, $postedFiles['photo'], 'photo', "photo-passeport");
  uploadFile($candidateData, $pathAnnexes, $postedFiles['idCard'], 'idCard', "carte-identite");
  uploadFile($candidateData, $pathAnnexes, $postedFiles['cv'], 'cv', "curriculum-vitae");
  uploadFile($candidateData, $pathAnnexes, $postedFiles['lettre'], 'lettre', "lettre-motivation");
nicrausaz's avatar
nicrausaz committed

nicrausaz's avatar
nicrausaz committed
  for ($i = 1; $i <= 9; $i++){
    if (array_key_exists('certifs'.$i, $postedFiles)){
      if (!($postedFiles['certifs'.$i]['name'] == "")) {
nicrausaz's avatar
nicrausaz committed
        uploadFile($candidateData, $pathAnnexes, $postedFiles['certifs'.$i], 'certifs'.$i, "annexe".$i);
nicrausaz's avatar
nicrausaz committed
      }
nicrausaz's avatar
nicrausaz committed
    }
nicrausaz's avatar
nicrausaz committed
  }

nicrausaz's avatar
nicrausaz committed
  if ($candidateData->formation=="polyMecanicien" && isset($postedFiles['gimch'])) {
    uploadFile($candidateData, $pathAnnexes, $postedFiles['gimch'], 'gimch', "certificat-gimch");
nicrausaz's avatar
nicrausaz committed
  }
nicrausaz's avatar
nicrausaz committed
  if ($candidateData->formation=="informaticien" && isset($postedFiles['griTestInput'])) {
    uploadFile($candidateData, $pathAnnexes, $postedFiles['griTestInput'], 'griTestInput', "certificat-gri");
nicrausaz's avatar
nicrausaz committed
  }

  return $candidateData;
}
nicrausaz's avatar
nicrausaz committed
#endregion

#region [DB Interactions]
nicrausaz's avatar
nicrausaz committed
function insertDataIntoDB ($pdo, $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);
nicrausaz's avatar
nicrausaz committed

  return $id;
}

function insertPersonalInfos ($pdo, $candidateData) {
  $sqlreq = "INSERT INTO applicant
nicrausaz's avatar
nicrausaz committed
	(applicant_guest_sciper, 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_guest_sciper, :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);
nicrausaz's avatar
nicrausaz committed
  $query->bindParam(':applicant_guest_sciper', $candidateData->guest_sciper, PDO::PARAM_STR);
  $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);
  $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);
  $query->execute();
  return $pdo->lastInsertId();
}

function insertResponsibles ($pdo, $representants, $applicantId) {
  $addedRepIds = [];

  // insert responsibles
  $sqlreq = "INSERT INTO responsible (responsible_gender, responsible_name, responsible_fsname, responsible_street, responsible_npa, responsible_phone)
    VALUES (:responsible_gender, :responsible_name, :responsible_fsname, :responsible_street, :responsible_npa, :responsible_phone)";
  foreach ($representants as $rep) {
    if ($rep['nom'] != '') {
      $query = $pdo->prepare($sqlreq);
      $query->bindParam(':responsible_gender', $rep['genre'], PDO::PARAM_STR);
      $query->bindParam(':responsible_name', $rep['nom'], PDO::PARAM_STR);
      $query->bindParam(':responsible_fsname', $rep['prenom'], PDO::PARAM_STR);
      $query->bindParam(':responsible_street', $rep['addresse']['rue'], PDO::PARAM_STR);
      $query->bindParam(':responsible_npa', $rep['addresse']['NPA'], PDO::PARAM_STR);
      $query->bindParam(':responsible_phone', $rep['telephone'], PDO::PARAM_STR);
      $query->execute();
      array_push($addedRepIds, $pdo->lastInsertId());
    }
  }

  // link responsibles
nicrausaz's avatar
nicrausaz committed
  $main_rep_id = isset($addedRepIds[0]) ? $addedRepIds[0] : null;
  $sec_rep_id = isset($addedRepIds[1]) ? $addedRepIds[1] : null;

  $sqlreq = "UPDATE applicant SET fk_applicant_main_responsible=:fk_applicant_main_responsible, fk_applicant_sec_responsible=:fk_applicant_sec_responsible WHERE applicant_id=:applicant_id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':fk_applicant_main_responsible', $main_rep_id, PDO::PARAM_INT);
  $query->bindParam(':fk_applicant_sec_responsible', $sec_rep_id, PDO::PARAM_INT);
  $query->bindParam(':applicant_id', $applicantId, PDO::PARAM_INT);
  $query->execute();
}

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();
    }
  }
}
nicrausaz's avatar
nicrausaz committed

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();
    }
  }
}
nicrausaz's avatar
nicrausaz committed

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();
    }
  }
nicrausaz's avatar
nicrausaz committed
}
nicrausaz's avatar
nicrausaz committed

function insertFiles ($pdo, $files, $applicantId, $filesPath) {
  // insert files
nicrausaz's avatar
nicrausaz committed
  $userPath = $filesPath . $applicantId . "\\";
nicrausaz's avatar
nicrausaz committed
  $sqlreq = "INSERT INTO file (file_name, file_path, applicant_applicant_id)
    VALUES (:file_name, :file_path, :applicant_applicant_id)";
  foreach ($files as $file) {
    $filePath = $userPath . $file;
    $query = $pdo->prepare($sqlreq);
    $query->bindParam(':file_name', $file, PDO::PARAM_STR);
    $query->bindParam(':file_path', $filePath, PDO::PARAM_STR);
    $query->bindParam(':applicant_applicant_id', $applicantId, PDO::PARAM_INT);
    $query->execute();
  }
}
nicrausaz's avatar
nicrausaz committed

function getPostulationBySciper ($pdo, $sciper) {
nicrausaz's avatar
nicrausaz committed
  $sqlreq = "SELECT * FROM applicant WHERE applicant_guest_sciper = :sciper AND applicant_application_status != 'deleted'";
nicrausaz's avatar
nicrausaz committed
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':sciper', $sciper, PDO::PARAM_STR);
  $query->execute();
nicrausaz's avatar
nicrausaz committed
  return $query->fetchAll();
nicrausaz's avatar
nicrausaz committed
}
nicrausaz's avatar
nicrausaz committed

function getResponsibleById ($pdo, $id) {
  $sqlreq = "SELECT * FROM responsible WHERE responsible_id = :id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();
  return $query->fetchAll();
}
nicrausaz's avatar
nicrausaz committed

function getScolaritiesById ($pdo, $id) {
  $sqlreq = "SELECT * FROM scolarity WHERE applicant_applicant_id = :id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();
  return $query->fetchAll();
}

function getProActivitiesById ($pdo, $id) {
  $sqlreq = "SELECT * FROM professional_activity WHERE applicant_applicant_id = :id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();
  return $query->fetchAll();
}
nicrausaz's avatar
nicrausaz committed

function getTrainingById ($pdo, $id) {
  $sqlreq = "SELECT * FROM training WHERE applicant_applicant_id = :id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();
  return $query->fetchAll();
}

function getFilesById ($pdo, $id) {
  $sqlreq = "SELECT * FROM file WHERE applicant_applicant_id = :id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();
  return $query->fetchAll();
}
nicrausaz's avatar
nicrausaz committed

function validFileAccess ($pdo, $id, $sciper) {
  $sqlreq = "SELECT file_name, file_path FROM file INNER JOIN applicant ON file.applicant_applicant_id = applicant.applicant_id WHERE applicant.applicant_guest_sciper = :sciper AND file_id = :id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->bindParam(':sciper', $sciper, PDO::PARAM_STR);
  $query->execute();
  return $query->fetchAll();
}
nicrausaz's avatar
nicrausaz committed

nicrausaz's avatar
nicrausaz committed
function deletePostulation ($pdo, $id, $sciper, $rep1, $rep2) {
  // delete scolarities
  $sqlreq = "DELETE FROM scolarity WHERE applicant_applicant_id=:id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();

  // delete Pro Activities
  $sqlreq = "DELETE FROM professional_activity WHERE applicant_applicant_id=:id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();

  // delete trainings
  $sqlreq = "DELETE FROM training WHERE applicant_applicant_id=:id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();

nicrausaz's avatar
nicrausaz committed
  // delete files from server
  $filesToRemove = getFilesById($pdo, $id);
  foreach ($filesToRemove as $key => $file) {
    unlink($file['file_path']);
  }
nicrausaz's avatar
nicrausaz committed
  // delete files (DB only)
  $sqlreq = "DELETE FROM file WHERE applicant_applicant_id=:id";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();

nicrausaz's avatar
nicrausaz committed
  echo "delete :$id";
  $sqlreq = "DELETE FROM applicant WHERE applicant_id=:id";
nicrausaz's avatar
nicrausaz committed
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->execute();

  // delete responsibles
  $sqlreq = "DELETE FROM responsible WHERE responsible_id=:id1 OR responsible_id=:id2";
  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id1', $rep1, PDO::PARAM_STR);
  $query->bindParam(':id2', $rep2, PDO::PARAM_STR);
  $query->execute();
nicrausaz's avatar
nicrausaz committed

nicrausaz's avatar
nicrausaz committed
  header('Location: viewpostulation.php');
nicrausaz's avatar
nicrausaz committed
}
nicrausaz's avatar
nicrausaz committed

nicrausaz's avatar
nicrausaz committed
function updatePostulation ($pdo, $id, $posted_data) {
nicrausaz's avatar
nicrausaz committed
  echo "editing: $id";
nicrausaz's avatar
nicrausaz committed
  echo "<pre>";
  print_r($posted_data);

  // update applicant data
  // -- applicant_birthdate= :applicant_birthdate,
  $sqlreq = "UPDATE applicant
	SET
		applicant_maturity= :applicant_maturity,
    applicant_gender= :applicant_gender,
		applicant_address_street= :applicant_address_street,
		applicant_address_npa= :applicant_address_npa,
		applicant_home_phone= :applicant_home_phone,
		applicant_personal_phone= :applicant_personal_phone,
		applicant_origin= :applicant_origin,
		applicant_nationality= :applicant_nationality,
		applicant_foreign_authorization= :applicant_foreign_authorization,
		applicant_avs= :applicant_avs,
		applicant_main_language= :applicant_main_language,
    applicant_speaks_french= :applicant_speaks_french,
    applicant_speaks_german= :applicant_speaks_german,
    applicant_speaks_english= :applicant_speaks_english,
    applicant_speaks_other= :applicant_speaks_other,
		applicant_has_majority= :applicant_has_majority,
		applicant_scolarity_end= :applicant_scolarity_end,
    applicant_already_applicant= :applicant_already_applicant,
    applicant_already_applicant_year= :applicant_already_applicant_year,
    applicant_application_updated_date= :applicant_application_updated_date
  WHERE applicant_id=:id";

  $query = $pdo->prepare($sqlreq);
  $query->bindParam(':id', $id, PDO::PARAM_STR);
  $query->bindParam(':applicant_maturity', $posted_data['applicant_maturity'], PDO::PARAM_STR);
  $query->bindParam(':applicant_gender', $posted_data['applicant_gender'], PDO::PARAM_STR);
  $query->bindParam(':applicant_address_street', $posted_data['applicant_address_street'], PDO::PARAM_STR);
  $query->bindParam(':applicant_address_npa', $posted_data['applicant_address_npa'], PDO::PARAM_STR);
  $query->bindParam(':applicant_home_phone', $posted_data['applicant_home_phone'], PDO::PARAM_STR);
  $query->bindParam(':applicant_personal_phone', $posted_data['applicant_personal_phone'], PDO::PARAM_STR);
  $query->bindParam(':applicant_origin', $posted_data['applicant_origin'], PDO::PARAM_STR);
  $query->bindParam(':applicant_nationality', $posted_data['applicant_nationality'], PDO::PARAM_STR);
  $query->bindParam(':applicant_foreign_authorization', $posted_data['applicant_foreign_authorization'], PDO::PARAM_STR);
  $query->bindParam(':applicant_avs', $posted_data['applicant_avs'], PDO::PARAM_STR);
  $query->bindParam(':applicant_main_language', $posted_data['applicant_main_language'], PDO::PARAM_STR);
  $query->bindParam(':applicant_speaks_french', $posted_data['applicant_speaks_french'], PDO::PARAM_STR);
  $query->bindParam(':applicant_speaks_german', $posted_data['applicant_speaks_german'], PDO::PARAM_STR);
  $query->bindParam(':applicant_speaks_english', $posted_data['applicant_speaks_english'], PDO::PARAM_STR);
  $query->bindParam(':applicant_speaks_other', $posted_data['applicant_speaks_other'], PDO::PARAM_STR);
  $query->bindParam(':applicant_has_majority', $posted_data['applicant_has_majority'], PDO::PARAM_STR);
  $query->bindParam(':applicant_already_applicant', $posted_data['applicant_already_applicant'], PDO::PARAM_STR);
  $query->bindParam(':applicant_already_applicant_year', $posted_data['applicant_already_applicant_year'], PDO::PARAM_STR);
  $query->bindParam(':applicant_scolarity_end', $posted_data['applicant_scolarity_end'], PDO::PARAM_STR);
  $query->bindParam(':applicant_application_updated_date', date("Y-m-d H:i:s"), PDO::PARAM_STR);

  $query->execute();

nicrausaz's avatar
nicrausaz committed
  // header('Location: viewpostulation.php');
}
#endregion
nicrausaz's avatar
nicrausaz committed
?>