cms.proweb-import-salaries.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. $name["json"] = "salaries-proweb";
  3. $name["files"] = "proweb-import-salaries";
  4. $name["returnKo"] = "proweb-salaries-upload";
  5. $name["returnOk"] = "proweb-salaries";
  6. if (core::ifPost("from") AND core::getPost("from") == $name["files"]) {
  7. if (isset($_FILES[$name["files"]]['error']) AND $_FILES[$name["files"]]['error'] > 0) {
  8. switch ($_FILES[$name["files"]]['error']) {
  9. case 1: // UPLOAD_ERR_INI_SIZE
  10. alert::recError("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
  11. break;
  12. case 2: // UPLOAD_ERR_FORM_SIZE
  13. alert::recError("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
  14. break;
  15. case 3: // UPLOAD_ERR_PARTIAL
  16. alert::recError("L'envoi du fichier a été interrompu pendant le transfert !");
  17. break;
  18. case 4: // UPLOAD_ERR_NO_FILE
  19. alert::recError("Vous n'avez pas chargé de fichier");
  20. break;
  21. }
  22. } elseif ($_FILES[$name["files"]]['type'] != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
  23. alert::recError("Seuls les fichiers Excel au format xlsx sont acceptés");
  24. header("Location: /?p=".$name["returnKo"]);
  25. exit();
  26. } else {
  27. if (file_exists($_FILES[$name["files"]]['tmp_name'])) {
  28. $fileType = ($_FILES[$name["files"]]['type'] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ? "xlsx" : "csv";
  29. // if($fileType == "xlsx"){
  30. $simpleXLSX = new simpleXLSX();
  31. $dataExcel = $simpleXLSX->parse($_FILES[$name["files"]]['tmp_name']);
  32. $returnData = $dataExcel->rows();
  33. // } else {
  34. // $simpleCSV = new simpleCSV();
  35. // $returnData = $simpleCSV->import($_FILES[$name["files"]]['tmp_name']);
  36. // }
  37. db::query("TRUNCATE TABLE ". DB_T_SALARIES_PROWEB);
  38. db::execute();
  39. foreach ($returnData as $key => $excelValues) {
  40. if($key == 0){
  41. if( $excelValues[0] != "od_id"
  42. OR $excelValues[1] != "od_nom"
  43. OR $excelValues[2] != "od_prenom"
  44. OR $excelValues[3] != "od_civilite"
  45. OR $excelValues[4] != "date_deb_anciennete()"
  46. OR $excelValues[5] != "date_fin_anciennete()"
  47. OR $excelValues[6] != "od_31"
  48. OR $excelValues[7] != "site_nom"
  49. OR $excelValues[8] != "od_login" ){
  50. alert::recError("Le fichier " . $_FILES[$name["files"]]['name'] . " n'est pas un export ProWeb global.");
  51. ($excelValues[0] != "od_id") ? alert::recError("La 1er colonne doit se nommer od_id") : "";
  52. ($excelValues[1] != "od_nom") ? alert::recError("La 2em colonne doit se nommer od_nom") : "";
  53. ($excelValues[2] != "od_prenom") ? alert::recError("La 3em colonne doit se nommer od_prenom") : "";
  54. ($excelValues[3] != "od_civilite") ? alert::recError("La 4em colonne doit se nommer od_civilite") : "";
  55. ($excelValues[4] != "date_deb_anciennete()") ? alert::recError("La 5em colonne doit se nommer date_deb_anciennete()") : "";
  56. ($excelValues[5] != "date_fin_anciennete()") ? alert::recError("La 6em colonne doit se nommer date_fin_anciennete()") : "";
  57. ($excelValues[6] != "od_31") ? alert::recError("La 7em colonne doit se nommer od_31") : "";
  58. ($excelValues[7] != "site_nom") ? alert::recError("La 8em colonne doit se nommer site_nom") : "";
  59. ($excelValues[8] != "od_login") ? alert::recError("La 9em colonne doit se nommer od_login") : "";
  60. header("Location: /?p=".$name["returnKo"]);
  61. exit();
  62. }
  63. } else {
  64. $final = proweb::archiveExcelValues($excelValues);
  65. db::query("INSERT INTO ". DB_T_SALARIES_PROWEB ." "
  66. . "(idProweb, loginId, loginIdRH, nom, prenom, sexe, contrat, jourEntree, jourEntreeRH, jourSortie, lieu, actif, RHBase, error, errorJson) "
  67. . "VALUES (:idProweb, :loginId, :loginIdRH, :nom, :prenom, :sexe, :contrat, :jourEntree, :jourEntreeRH, :jourSortie, :lieu, :actif, :RHBase, :error, :errorJson)");
  68. db::bind(':idProweb', $final["idProweb"]);
  69. db::bind(':loginId', $final["loginId"]);
  70. db::bind(':loginIdRH', $final["loginIdRH"]);
  71. db::bind(':nom', $final["nom"]);
  72. db::bind(':prenom', $final["prenom"]);
  73. db::bind(':sexe', $final["sexe"]);
  74. db::bind(':contrat', $final["contrat"]);
  75. db::bind(':jourEntree', $final["jourEntree"]);
  76. db::bind(':jourEntreeRH', $final["jourEntreeRH"]);
  77. db::bind(':jourSortie', $final["jourSortie"]);
  78. db::bind(':lieu', $final["lieu"]);
  79. db::bind(':actif', $final["actif"]);
  80. db::bind(':RHBase', $final["RHBase"]);
  81. db::bind(':error', $final["error"]);
  82. db::bind(':errorJson', $final["errorJson"]);
  83. try {
  84. db::execute();
  85. } catch (Exception $ex) { echo $ex;
  86. alert::recError("Erreur sur l'import du fichier " . $_FILES[$name["files"]]['name']);
  87. header("Location: /?p=".$name["returnKo"]);
  88. exit();
  89. }
  90. }
  91. }
  92. $md5File = file::record($_FILES[$name["files"]]);
  93. if($md5File == FALSE){
  94. header("Location: /?p=proweb-historique-excel");
  95. exit();
  96. }
  97. $nbSalaries = count($returnData) - 1;
  98. $json = json_encode($returnData);
  99. db::query("INSERT INTO ".DB_T_EXCEL_PROWEB." (json, nbSalaries, md5, dateData, id_user) VALUES (:json, :nbSalaries, :md5, :dateData, :id_user)");
  100. db::bind(':nbSalaries', $nbSalaries);
  101. db::bind(':dateData', $_POST["date"]);
  102. db::bind(':md5', $md5File);
  103. db::bind(':json', base64_encode($json));
  104. db::bind(':id_user', session::getId());
  105. try {
  106. db::execute();
  107. } catch (Exception $ex) {
  108. alert::recError("Erreur sur l'import du fichier " . $_FILES[$name["files"]]['name']);
  109. header("Location: /?p=proweb-historique-excel");
  110. exit();
  111. }
  112. json::create("excel-proweb");
  113. json::create($name["json"]);
  114. alert::recSuccess("Le fichier " . $_FILES[$name["files"]]['name'] . " a été chargé avec succès");
  115. header("Location: /?p=".$name["returnOk"]);
  116. exit();
  117. } else {
  118. alert::recError("Erreur lors du chargement du fichier : " . $_FILES[$name["files"]]['name']);
  119. }
  120. }
  121. header("Location: /?p=".$name["returnKo"]);
  122. exit();
  123. } else {
  124. header('HTTP/1.0 401 Unauthorized');
  125. exit();
  126. }