<?php

// --------
// Sécurité
// --------
if (isValidConstant() != 1) {
    fermeSessionUtilisateur();
}

// ----------------------
// Droit de l'utilisateur
// ----------------------
if ($_SESSION['gestion_site'] < 'Oui') {
    exit;
}

// ------------------------------
// Caractéristiques du module
// ------------------------------
unset($module);
$module = array(
    "titre" => "Gestion des lieux de travail",
    "urldest" => $SCRIPT_NAME . "?page=liste_lieuxtravail",
    "recherche" => array("engin" => false),
    "jeton" => $jeton,
    "opradmin" => "Ajouter un lieu de travail",
    "fenetre" => array(
        "nom" => "liste_lieuxtravail",
        "titre" => "titre",
        "largeur" => "750",
        "hauteur" => "420",
        "validation" => true,
        "champs" => array("lnolieutravail", "lnomlieutravail", "lnoemployeur", "lcontact", "ladresse", "lville", "lcodepostal", "ltelephone", "ltelecopieur", "lemail")
    ),
    "msgajoutbouton" => "Ajout d'une fiche d'un lieu de travail",
    "actionajoutbouton" => "Ajouter la fiche du lieu de travail",
    "msgmodifbouton" => "Modification de la fiche d'un lieu de travail",
    "actionmodifbouton" => "Modifier la fiche du lieu de travail",
    "nombre_a_afficher" => array(
        0 => array("refid" => 15, "valeur" => 15),
        1 => array("refid" => 30, "valeur" => 30),
        2 => array("refid" => 45, "valeur" => 45),
        3 => array("refid" => 60, "valeur" => 60),
        4 => array("refid" => 120, "valeur" => 120)
    ),
    "lientri" => true,
    "entete" => array(
        1 => array("# Lieu" => "reflieutravail", "largeur" => "45px"),
        2 => array("Lieu" => "nomlieutravail", "largeur" => "200px"),
        3 => array("Attaché à/au" => "nomemployeur", "largeur" => "125px"),
        4 => array("Contact" => "nomcontact", "largeur" => "200px"),
        5 => array("Adresse" => "(adresse+ville+codepostal)", "largeur" => "165px"),
        6 => array("Téléphone" => "numtel", "largeur" => "90px"),
        7 => array("Télécopieur" => "numfax", "largeur" => "90px"),
        8 => array("Adresse @" => "email", "largeur" => "200px"),
        9 => array("Action" => "expression", "largeur" => "45px")
    ),
    "msg" => array(
        "maj_ok" => "Modification effectuée avec succès.",
        "maj_echec" => "L'opération de mise à jour du lieu de travail a échouée.",
        "employeur_invalide" => "Employeur introuvable ou inconnu."
    )
);

// ------------------
// Requête sur le tri
// ------------------
$rtri = antiInjection($module["entete"][$tri][key($module["entete"][$tri])] . " " . $dir);

// -----------------------
// Opération de sauvegarde
// -----------------------
if (isset($action)) {

    $msg = "";
    $action = stripslashes(antiInjection($action));

    if ($action == "Modifier la fiche du lieu de travail" || $action == "Ajouter la fiche du lieu de travail") {

        $lnolieutravail = antiInjection(filter_input(INPUT_POST, 'lnolieutravail'));
        $lnomlieutravail = antiInjection($lnomlieutravail);
        $lnoemployeur = antiInjection(filter_input(INPUT_POST, 'lnoemployeur'));
        $lcontact = antiInjection($lcontact);
        $ladresse = antiInjection($ladresse);
        $lville = antiInjection($lville);
        $lcodepostal = antiInjection($lcodepostal);
        $ltelephone = antiInjection($ltelephone);
        $ltelecopieur = antiInjection($ltelecopieur);
        $lemail = antiInjection($lemail);

        $error = false;

        //Validations d'usage
        if (empty($lnomlieutravail)) {
            $module["resultatSQL"] = false;
            $module["message"] = "Le nom du lieu de travail est requis.";
            $error = true;
        } else if ($lnoemployeur === "" || intval($lnoemployeur) < 0) {
            $module["resultatSQL"] = false;
            $module["message"] = "L'employeur de l'utilisateur est requis.";
            $error = true;
        } else if (empty($lcontact)) {
            $module["resultatSQL"] = false;
            $module["message"] = "Le nom de la personne contact est requis";
            $error = true;
        } else if ($ladresse === "") {
            $module["resultatSQL"] = false;
            $module["message"] = "L'adresse du lieu de travail est requis.";
            $error = true;
        } else if ($lville === "") {
            $module["resultatSQL"] = false;
            $module["message"] = "Le nom de la ville est requis.";
            $error = true;
        } else if (preg_match("/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/", $lcodepostal) !== 1) {
            $module["resultatSQL"] = false;
            $module["message"] = "Le code postal est requis et doit être valide.";
            $error = true;
        } else if (!isValidPhone($ltelephone)) {
            $module["resultatSQL"] = false;
            $module["message"] = "Le numéro de téléphone est requis et doit être valide.";
            $error = true;
        } else if (!empty($ltelecopieur) && !isValidPhone($ltelecopieur)) {
            $module["resultatSQL"] = false;
            $module["message"] = "Le numéro de télécopieur doit être valide.";
            $error = true;
        } else if (!filter_var($lemail, FILTER_VALIDATE_EMAIL)) {
            $module["resultatSQL"] = false;
            $module["message"] = "L'adresse courriel est requise et doit être valide.";
            $error = true;
        }

        if (!$error) {

            unset($sqlparam, $result);
            $lnoemployeur = antiInjection($lnoemployeur);
            $sqlparam["table"][] = "employeurs";
            $sqlparam["where"][] = "refemployeur='$lnoemployeur'";
            $result = executerRequeteSql($sqlparam);
            if (!isset($result)) {
                $module["resultatSQL"] = false;
                $module["message"] = $module["msg"]["employeur_invalide"];
            } else {
                unset($sqlparam, $result);

                if ($action == "Modifier la fiche du lieu de travail") {
                    $sqlparam["type"] = "UPDATE";
                    $sqlparam["where"][] = sprintf("reflieutravail = %d", $lnolieutravail);
                } else {
                    $sqlparam["type"] = "INSERT";
                    $sqlparam["champs"]["reflieutravail"] = sprintf("%d", $lnolieutravail);
                }

                $sqlparam["table"][] = "lieuxtravail";
                $sqlparam["champs"]["nomlieutravail"] = "'" . sprintf("%s", $lnomlieutravail) . "'";
                $sqlparam["champs"]["refemployeur"] = sprintf("%d", $lnoemployeur);
                $sqlparam["champs"]["nomcontact"] = "'" . sprintf("%s", $lcontact) . "'";
                $sqlparam["champs"]["adresse"] = "'" . sprintf("%s", $ladresse) . "'";
                $sqlparam["champs"]["ville"] = "'" . sprintf("%s", $lville) . "'";
                $sqlparam["champs"]["codepostal"] = "'" . sprintf("%s", $lcodepostal) . "'";
                $sqlparam["champs"]["numtel"] = "'" . sprintf("%s", $ltelephone) . "'";
                $sqlparam["champs"]["numfax"] = "'" . sprintf("%s", $ltelecopieur) . "'";
                $sqlparam["champs"]["email"] = "'" . sprintf("%s", $lemail) . "'";
                // TODO - Mettre une valeur pour le champ «vide» même s'il n'est pas utilisé.
                // TODO - Champ possiblement à retirer.
                $sqlparam["champs"]["dept"] = "'vide'";

                $result = executerRequeteSql($sqlparam);

                if (isset($result)) {
                    //unset($lnolieutravail);
                    unset($lnomlieutravail);
                    unset($lnoemployeur);
                    unset($lcontact);
                    unset($ladresse);
                    unset($lville);
                    unset($lcodepostal);
                    unset($ltelephone);
                    unset($ltelecopieur);
                    unset($lemail);

                    $lnolieutravail = sprintf("%d", $lnolieutravail); //$result[0]["reflieutravail"];
                    $lnomlieutravail = '';
                    $lnoemployeur = '';
                    $lcontact = '';
                    $ladresse = '';
                    $lville = '';
                    $lcodepostal = '';
                    $ltelephone = '';
                    $ltelecopieur = '';
                    $lemail = '';
                    $module["resultatSQL"] = true;
                    $module["message"] = $module["msg"]["maj_ok"];
                } else {
                    $module["resultatSQL"] = false;
                    $module["message"] = $module["msg"]["maj_echec"];
                }
            }
        }
    }
} else {
    unset($lnolieutravail);
    unset($lnomlieutravail);
    unset($lcontact);
    unset($ladresse);
    unset($lville);
    unset($lcodepostal);
    unset($ltelephone);
    unset($ltelecopieur);
    unset($lnoemployeur);
    unset($lemail);
    $lnolieutravail = 0;
    $lnomlieutravail = '';
    $lnom = '';
    $lcontact = '';
    $ladresse = '';
    $lville = '';
    $lcodepostal = '';
    $ltelephone = '';
    $ltelecopieur = '';
    $lnoemployeur = '';
    $lemail = '';
}

$i = 0;
unset($sqlparam);

$sqlparam["table"][] = "lieuxtravail";
$sqlparam["table"][] = "employeurs";
$sqlparam["join"][] = "employeurs.refemployeur = lieuxtravail.refemployeur";
$sqlparam["champs"][] = "lieuxtravail.reflieutravail";
$sqlparam["champs"][] = "lieuxtravail.nomlieutravail";
$sqlparam["champs"][] = "employeurs.refemployeur";
$sqlparam["champs"][] = "employeurs.nomemployeur";
$sqlparam["champs"][] = "lieuxtravail.nomcontact";
$sqlparam["champs"][] = "lieuxtravail.adresse";
$sqlparam["champs"][] = "lieuxtravail.ville";
$sqlparam["champs"][] = "lieuxtravail.codepostal";
$sqlparam["champs"][] = "lieuxtravail.numtel";
$sqlparam["champs"][] = "lieuxtravail.numfax";
$sqlparam["champs"][] = "lieuxtravail.email";
$sqlparam["compte"] = "lieuxtravail.reflieutravail";
$sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . ", " . $nombreaffiche;
$sqlparam["ordre"][] = $rtri;

$result = executerRequeteSql($sqlparam);
$module["compte"] = $result[0]["compte"];
print preparerModule($module);

//Liste principale
if (isset($result)) {
    $i = ($nopage - 1) * $nombreaffiche + 1;
    unset($style);
    $style = "border:1px solid #cfcfcf; font-family:arial, helvetica, sans-serif;; font-size:9pt; margin-left:5px; margin-right:5px; padding-right:10px;overflow-x:hidden; white-space:nowrap;";
    //Boucle de lecture
    foreach ($result as $clef => $champs) {
        $telephone = ($champs["numtel"] != "") ? $champs["numtel"] : " ";
        $telecopieur = ($champs["numfax"] != "") ? $champs["numfax"] : " ";
        $email = ($champs["email"]) ? $champs["email"] : " ";

        print "<tr>\n";
        print "<td style='$style'>" . $i . "</td>";
        print "<td class='detail_liste' style='width:" . $module["entete"][1]["largeur"] . "px;'title=\"" . $champs["reflieutravail"] . "\">" . $champs["reflieutravail"] . "</td>";
        print "<td class='detail_liste' style='width:" . $module["entete"][2]["largeur"] . "px;' title=\"" . htmlentities($champs["nomlieutravail"]) . "\">";
        print "<div style='overflow:hidden; white-space:nowrap; width:200px;'>" . htmlentities($champs["nomlieutravail"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>";
        print "<td class='detail_liste' style=' width:" . $module["entete"][3]["largeur"] . "px;' title=\"" . $champs["nomemployeur"] . "\">";
        print "<div style='overflow:hidden; white-space:nowrap; width:125px;'>" . htmlentities($champs["nomemployeur"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>";
        print "<td class='detail_liste' style='width:" . $module["entete"][4]["largeur"] . "px;' title=\"" . $champs["nomcontact"] . "\">";
        print "<div style='overflow:hidden; white-space:nowrap; width:200px;'>" . htmlentities($champs["nomcontact"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>";
        print "<td class='detail_liste' style='width:" . $module["entete"][5]["largeur"] . "px;' title=\"" . $champs["adresse"] . " " . $champs["ville"] . " " . $champs["codepostal"] . "\">";
        print "<div style='overflow:hidden; white-space:nowrap; width:165px;'>" . htmlentities($champs["adresse"] . " " . $champs["ville"] . " " . $champs["codepostal"]) . "</div></td>\n";
        print "<td class='detail_liste' style='width:" . $module["entete"][6]["largeur"] . "px;' title=\"" . $telephone . "\">";
        print htmlentities($telephone, ENT_SUBSTITUTE, "UTF-8") . "</td>\n";
        print "<td class='detail_liste' style='width:" . $module["entete"][7]["largeur"] . "px;' title=\"" . $telecopieur . "\">";
        print htmlentities($telecopieur, ENT_SUBSTITUTE, "UTF-8") . "</td>\n";
        print "<td class='detail_liste' style='width:" . $module["entete"][8]["largeur"] . "px;' title=\"" . $email . "\">";
        print "<div style='overflow:hidden; white-space:nowrap; width:200px;'>" . htmlentities($email, ENT_SUBSTITUTE, "UTF-8") . "</div></td>\n";
        print "<td class='detail_liste' style='width:30x;'>\n";
        print "<form action='' name='sous_formulaire$i'>";
        print prepareBoutonModifier(array($champs["reflieutravail"], $champs["nomlieutravail"], $champs["refemployeur"], $champs["nomcontact"],
            $champs["adresse"], $champs["ville"], $champs["codepostal"], $champs["numtel"],
            $champs["numfax"], $champs["email"]));
        print "</form>";
        print "</td>\n";
        print "</tr>\n";
        $i++;
    }
    print"</table>";
    ?>
    <script type='text/javascript'>
        function ValidationFormulaire()
        {
            var msgNom = "Nom de l'employeur requis.";
            var msgEmployeur = "Employeur requis.";
            var msgPersonne = "Nom de la personne contact requis.";
            var msgAdresse = "Adresse requise.";
            var msgVille = "Nom de la ville requise.";
            var msgCodePostal = "Code postal requis et valide.";
            var msgTel1 = "Numéro de téléphone requis et valide.";
            var msgTel2 = "Numéro de télécopieur requis et valide.";
            var msgEmail = "Adresse de courriel valide requise";

            var frm = document.frmModif;

            if (frm.lnomlieutravail.value === "") {
                jAlert(msgNom);
                return false;
            } else if (frm.lnoemployeur.selectedIndex === 0) {
                jAlert(msgEmployeur);
                return false;
            } else if (frm.lcontact.value === "") {
                jAlert(msgPersonne);
                return false;
            } else if (frm.ladresse.value === "") {
                jAlert(msgAdresse);
                return false;
            } else if (frm.lville.value === "") {
                jAlert(msgVille);
                return false;
            } else if (!isPostCode(frm.lcodepostal.value.trim())) {
                jAlert(msgCodePostal);
                frm.lcodepostal.focus();
                return false;
            } else if (!isTelephone(frm.ltelephone.value)) {
                jAlert(msgTel1);
                frm.ltelephone.focus();
                return false;
            } else if (frm.ltelecopieur.value !== "" && !isTelephone(frm.ltelecopieur.value)) {
                jAlert(msgTel2);
                frm.ltelecopieur.focus();
                return false;
            } else if (!isCourrielValide(frm.lemail.value)) {
                jAlert(msgEmail);
                frm.lemail.focus();
                return false;
            }

            closeRemote();
            return true;
        }

        function modifpres() {
            var frm = document.frmModif;
            var valeurTexte = remove(frm.lcontact.value, "Madame ");
            valeurTexte = remove(valeurTexte, "Monsieur ");

            if (frm.lpresentation.selectedIndex > 0) {
                frm.lcontact.value = frm.lpresentation.value + " " + valeurTexte;
            }
        }

        // Mise en place des masques de saisie
        $(document).ready(function () {
            $("#ltelephone").mask("(999) 999-9999");
            $("#ltelecopieur").mask("(999) 999-9999");
            $("#frmModif").validate();
        });

    </script>
    <?php

    // Pagination
    print "<table style='width:1200px; margin:auto;'>";
    print "<tr><td style='vertical-align:bottom;'>";
    print $seqpage;
    print "</td>";
    print "<td style='width:320px; text-align:right;'>";
    //Haut de page
    if ($nombreaffiche > 15) {
        print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
        print "<a name='baspage'>";
    }
    print "</td></tr>";
    print "</table>";
    print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);
    //Lieu de travail
    print "</tr>";
    print "<tr>";
    print "<td>Nom du lieu de travail : </td>";
    print "<td>";
    // Clef de l'enregistrement du lieu de travail.
    print sprintf("<input type='hidden' id='lnolieutravail' name='lnolieutravail' value='%d'>", $lnolieutravail);
    print "<INPUT TYPE='text' id='lnomlieutravail' NAME='lnomlieutravail' Value='" . $lnomlieutravail . "' SIZE='50' MAXLENGTH='50' >";
    print "</td>";
    print "</tr>";
    //Employeur
    print "<tr>";
    print "<td>Employeur : </td>";
    print "<td>";

    unset($result2);
    $result2 = getEmployeurs();
    unset($param);
    $param["form"] = "frmModif";
    $param["nom"] = "lnoemployeur";
    $param["etq"] = "";
    if ($_SESSION['gestion_site'] >= 'Oui') {
        $param["defaut"] = (isset($ListeEmployeurs) ? $ListeEmployeurs : '');
    } else {
        $param["defaut"] = $_SESSION["employeur"];
    }
    $param["donnees"] = $result2;
    $param["menu"] = true;
    $param["evt"] = " ";
    print formListbox2($param);
    print "</td>
      </tr>";
    print "<tr>";
    print "<td>Personne contact : </td>";
    print "<td>";
    print "<select name='lpresentation' onblur=\"javascript:modifpres()\" onclick=\"javascript:modifpres()\">";
    print "<option>-----</option>";
    print "<option>Madame</option>";
    print "<option>Monsieur</option>";
    print "</select>";
    print "<INPUT TYPE='text' NAME='lcontact' id='lcontact' Value='$lcontact' SIZE='50' MAXLENGTH='50' >";
    print "</td>";
    print "</tr>";
    print "<tr>";
    print "<td>Adresse : </td>";
    print "<td>";
    print "<INPUT TYPE='text' NAME='ladresse' id='ladresse' Value='$ladresse' SIZE='50' MAXLENGTH='50' >";
    print "</td>";
    print "</tr>";
    print "<tr>";
    print "<td>Ville : </td>";
    print "<td>";
    print "<INPUT TYPE='text' NAME='lville' id='lville' Value='$lville' SIZE='30' MAXLENGTH='30' ><br>";
    print "</td>";
    print "</tr>";
    print "<tr>";
    print "<td>Code postal : </td>";
    print "<td>";
    print "<INPUT TYPE='text' id='lcodepostal' NAME='lcodepostal' Value='$lcodepostal' SIZE='7' MAXLENGTH='7' >";
    print "</td>";
    print "</tr>";
    print "<tr>";
    print "<td>Téléphone : </td>";
    print "<td>";
    print "<INPUT TYPE='text'NAME='ltelephone' Value='$ltelephone' id='ltelephone' SIZE='14' MAXLENGTH='14' >";
    print "</td>";
    print "</tr>";
    print "<tr>";
    print "<td>Télécopieur : </td>";
    print "<td>";
    print "<INPUT TYPE='text' NAME='ltelecopieur' Value='$ltelecopieur' id='ltelecopieur' SIZE='14' MAXLENGTH='14' >";
    print "</td>";
    print "</tr>";
    print "<tr>";
    print "<td>Adresse de courriel : </td>";
    print "<td>";
    print "<INPUT TYPE='text' NAME='lemail' id='lemail' Value='$lemail' SIZE='50' MAXLENGTH='50'>"; // class='required email'><br>";
    print "</td >";
    print "</tr>";
    print fenetreModaleFin($module["actionmodifbouton"]);
}
