<?php

$name["json"] = "salaries-proweb";
$name["files"] = "proweb-import-salaries";
$name["returnKo"] = "proweb-salaries-upload";
$name["returnOk"] = "proweb-salaries";

if (core::ifPost("from") AND core::getPost("from") == $name["files"]) {
    
    if (isset($_FILES[$name["files"]]['error']) AND $_FILES[$name["files"]]['error'] > 0) {

        switch ($_FILES[$name["files"]]['error']) {
            case 1: // UPLOAD_ERR_INI_SIZE
                alert::recError("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
                break;
            case 2: // UPLOAD_ERR_FORM_SIZE
                alert::recError("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
                break;
            case 3: // UPLOAD_ERR_PARTIAL
                alert::recError("L'envoi du fichier a été interrompu pendant le transfert !");
                break;
            case 4: // UPLOAD_ERR_NO_FILE
                alert::recError("Vous n'avez pas chargé de fichier");
                break;
        }
    } elseif ($_FILES[$name["files"]]['type'] != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") {
        alert::recError("Seuls les fichiers Excel au format xlsx sont acceptés");
        header("Location: /".$name["returnKo"] . ".html");
        exit();
    } else {

        if (file_exists($_FILES[$name["files"]]['tmp_name'])) {
            
            $fileType = ($_FILES[$name["files"]]['type'] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ? "xlsx" : "csv";

            $simpleXLSX = new simpleXLSX();
            $dataExcel = $simpleXLSX->parse($_FILES[$name["files"]]['tmp_name']);
            $returnData = $dataExcel->rows();

            $nbImport = count($returnData)-1;
            if(core::getConfig("MIN_PROWEB_PEOPLE") >= $nbImport){
                alert::recError("Votre fichier comporte " . $nbImport . " salariés ce qui n'est pas normal. Votre fichier devrait comprendre plus de " . core::getConfig("MIN_PROWEB_PEOPLE") . " salariés.");
                header("Location: /proweb-salaries-upload.html");
                exit();
            }
            
            db::query("TRUNCATE TABLE ". DB_T_SALARIES_PROWEB);
            db::execute();
            
            foreach ($returnData as $key => $excelValues) {
                
                if($key == 0){     
                    if(        $excelValues[0] != "od_id"
                            OR $excelValues[1] != "od_nom" 
                            OR $excelValues[2] != "od_prenom" 
                            OR $excelValues[3] != "od_civilite" 
                            OR $excelValues[4] != "od_date_naiss" 
                            OR $excelValues[5] != "date_deb_anciennete()" 
                            OR $excelValues[6] != "date_fin_anciennete()" 
                            OR $excelValues[7] != "od_meyclub_subv" 
                            OR $excelValues[8] != "od_meyclub_actif" 
                            OR $excelValues[9] != "od_acces_web" 
                            OR $excelValues[10] != "site_nom"
                            OR $excelValues[11] != "od_login" ){

                        alert::recError("Le fichier " . $_FILES[$name["files"]]['name'] . " n'est pas un export ProWeb global.");

                        ($excelValues[0] != "od_id") ? alert::recError("La 1er colonne doit se nommer od_id") : "";
                        ($excelValues[1] != "od_nom") ? alert::recError("La 2em colonne doit se nommer od_nom") : "";
                        ($excelValues[2] != "od_prenom") ? alert::recError("La 3em colonne doit se nommer od_prenom") : "";
                        ($excelValues[3] != "od_civilite") ? alert::recError("La 4em colonne doit se nommer od_civilite") : "";
                        ($excelValues[4] != "od_date_naiss") ? alert::recError("La 5em colonne doit se nommer od_date_naiss") : "";
                        ($excelValues[5] != "date_deb_anciennete()") ? alert::recError("La 6em colonne doit se nommer date_deb_anciennete()") : "";
                        ($excelValues[6] != "date_fin_anciennete()") ? alert::recError("La 7em colonne doit se nommer date_fin_anciennete()") : "";
                        ($excelValues[7] != "od_meyclub_subv") ? alert::recError("La 8em colonne doit se nommer od_meyclub_subv") : "";
                        ($excelValues[8] != "od_meyclub_actif") ? alert::recError("La 8em colonne doit se nommer od_meyclub_actif") : "";
                        ($excelValues[9] != "od_acces_web") ? alert::recError("La 8em colonne doit se nommer od_acces_web") : "";
                        ($excelValues[10] != "site_nom") ? alert::recError("La 9em colonne doit se nommer site_nom") : "";
                        ($excelValues[11] != "od_login") ? alert::recError("La 10em colonne doit se nommer od_login") : "";

                        header("Location: /".$name["returnKo"] . ".html");
                        exit();
                    }
    
                } else {
                    
                    $final = proweb::archiveExcelValues($excelValues);
                    
                    db::query("INSERT INTO ". DB_T_SALARIES_PROWEB ." "
                            . "(idProweb, loginId, loginIdRH, nom, prenom, sexe, contrat, dateNaissance, jourEntree, jourEntreeRH, jourSortie, lieu, actif, RHBase, error, errorJson) "
                            . "VALUES (:idProweb, :loginId, :loginIdRH, :nom, :prenom, :sexe, :contrat, :dateNaissance, :jourEntree, :jourEntreeRH, :jourSortie, :lieu, :actif, :RHBase, :error, :errorJson)");
                    db::bind(':idProweb', $final["idProweb"]);
                    db::bind(':loginId', $final["loginId"]);
                    db::bind(':loginIdRH', $final["loginIdRH"]);
                    db::bind(':nom', $final["nom"]);
                    db::bind(':prenom', $final["prenom"]);
                    db::bind(':sexe', $final["sexe"]);
                    db::bind(':contrat', $final["contrat"]);
                    db::bind(':dateNaissance', $final["dateNaissance"]);
                    db::bind(':jourEntree', $final["jourEntree"]);
                    db::bind(':jourEntreeRH', $final["jourEntreeRH"]);
                    db::bind(':jourSortie', $final["jourSortie"]);
                    db::bind(':lieu', $final["lieu"]);
                    db::bind(':actif', $final["actif"]);
                    db::bind(':RHBase', $final["RHBase"]);
                    db::bind(':error', $final["error"]);
                    db::bind(':errorJson', $final["errorJson"]);
                    
                    try {
                        db::execute();
                    } catch (Exception $ex) { echo $ex;
                        alert::recError("Erreur sur l'import du fichier " . $_FILES[$name["files"]]['name']);
                        header("Location: /".$name["returnKo"] . ".html");
                        exit();
                    }
                    
                }
            }

            $md5File = file::record($_FILES[$name["files"]]);
            if($md5File == FALSE){
                header("Location: /proweb-historique-excel.html");
                exit();
            }
            
            $nbSalaries = count($returnData) - 1;
            $json = json_encode($returnData);
            
            db::query("INSERT INTO ".DB_T_EXCEL_PROWEB." (json, nbSalaries, md5, dateData, id_user) VALUES (:json, :nbSalaries, :md5, :dateData, :id_user)");
            db::bind(':nbSalaries', $nbSalaries);
            db::bind(':dateData', $_POST["date"]);
            db::bind(':md5', $md5File);
            db::bind(':json', base64_encode($json));
            db::bind(':id_user', session::getId());
            
            try {
                db::execute();
            } catch (Exception $ex) {
                alert::recError("Erreur sur l'import du fichier " . $_FILES[$name["files"]]['name']);
                header("Location: /proweb-historique-excel.html");
                exit();
            }
            
            json::create("excel-proweb");
            json::create($name["json"]);

            historique::recRef("/proweb-historique-excel.html");
            historique::add(array(
                "idType" => historique::getIdRef("ACTION"),
                "idUser" => session::getId(),
                "idPage" => historique::getIdRef("/proweb-historique-excel.html"),
                "log" => "Import du fichier " . $_FILES[$name["files"]]['name']
            ));

            core::updateConfig("MIN_PROWEB_PEOPLE", $nbImport);

            alert::recSuccess("Le fichier " . $_FILES[$name["files"]]['name'] . " a été chargé avec succès");
            header("Location: /".$name["returnOk"] . ".html");
            exit();
        } else {
            alert::recError("Erreur lors du chargement du fichier : " . $_FILES[$name["files"]]['name']);
        }
    }
    header("Location: /".$name["returnKo"] . ".html");
    exit();
} else {
    header('HTTP/1.0 401 Unauthorized');
    exit();
}
