<?php
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.0
 *
 * Copyright (C) 2006-2014  Sylvain FATOME
 * This program is free software; you can redistribute it and/or modify it under the terms
 * of the GNU General Public License as published by the Free Software Foundation;
 * either version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with this program
 * (in the directory docs);
 * if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301, USA.
 *
 * Contact : galawa@free.fr
 *
 * Web : http://smi.no-ip.org
 ****************************************************************************************/


// vérification des tentatives de hack
$pos = strpos($_SERVER['PHP_SELF'], "inc.php");
if ($pos === FALSE)
    $ok_inc = TRUE;
else
    $ok_inc = FALSE;
if ($ok_inc == FALSE) header("Location: ../index.php");


include_once("../inc/config.inc.php");
include_once("../inc/fic_age.inc.php");
include_once("../inc/fic_do.inc.php");
include_once("../inc/fic_droits.inc.php");
include_once("../inc/fic_st.inc.php");
include_once("../inc/fic_hum.inc.php");
include_once("../inc/fic_int.inc.php");
include_once("../inc/fic_tec.inc.php");
include_once("../inc/fic_txt.inc.php");
include_once("../inc/func.inc.php");
include_once("../inc/func_date.inc.php");
include_once("../inc/func_log.inc.php");
include_once("../inc/func_geo.inc.php");
include_once("../inc/func_mail.inc.php");
include_once("../inc/func_txt.inc.php");
include_once("../inc/func_txtcm.inc.php");
include_once("../classes/phpmailer/class.phpmailer.php");
include_once("../classes/phpmailer/class.smtp.php");
include_once("../inc/mail.inc.php");
include_once("../classes/ezSQL/shared/ez_sql_core.php");
include_once("../classes/ezSQL/mysqli/ez_sql_mysqli.php");
include_once("../inc/func_sql.inc.php");
Archivelog(@$_SESSION["code_log"]);
// Variables Formulaire
fix_magic_quotes();
$_POST = clean_str($_POST);

$titre = @$_POST["titre"];
$td = @$_POST["td"];
$tl = intval(@$_POST["tl"]);

$datecrea = datetomysql(@$_POST["datecreaf"]);
$dateout = datetomysql(@$_POST["dateoutf"]);
$emploi = @$_POST["emploi"];
$qualif = @$_POST["qualif"];
$niveau = @$_POST["niveau"];
$echelon = @$_POST["echelon"];
$coeff = @$_POST["coeff"];
$couleur = @$_POST["couleur"];
$dconges = datetomysql(@$_POST["dconges"]);
$fconges = datetomysql(@$_POST["fconges"]);
$empl = @$_POST["empl"];
$codeage = "";
$codedo = "";
$codest = "";
switch ($tl) {
    case 1 :
        $codeage = $empl;
        // On vérifie si cette agence est aussi sous-traitant
        $row = lit_enr_stage($empl);
        if (is_array($row))
            $codest = "S" . substr($empl, 1, strlen($empl));
        break;
    case 2 :
        $codedo = $empl;
        break;
    case 3 :
        $codest = $empl;
        // On vérifie si ce sous-traitant est aussi agence
        $row = lit_enr_st($empl);
        if (is_array($row)) {
            extract($row);
            if (trim($st_codeage) <> "")
                $codeage = $st_codeage;
        }
        break;
    default :
        break;
}
$code = @$_POST["code"];
$civil = str_majuscules(@$_POST["civil"]);
$prenom = ucname(@$_POST["prenom"]);
$nom = str_majuscules(@$_POST["nom"]);
$adr1 = str_majuscules(@$_POST["adr1"]);
$adr2 = str_majuscules(@$_POST["adr2"]);
$dep = str_majuscules(@$_POST["dep"]);
$ville = str_majuscules(@$_POST["ville"]);
$pays = str_majuscules(@$_POST["pays"]);
$telf = @$_POST["telf"];
$fax = @$_POST["fax"];
$telp = @$_POST["telp"];
$email = strtolower(@$_POST["email"]);
$mess = strtolower(@$_POST["mess"]);
$nota = @$_POST["nota"];

$codeuser = @$_SESSION["code_log"];

$pass = cremdp(FALSE);
$passcrypt = md5($pass);

$retourliste = TRUE;

switch ($td) {
    // Ajout de la fiche Technicien
    case "add" :
        $codet = crecode("T", TRUE);

        $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

        $rech = "SELECT COUNT(*) FROM `" . TBTEC . "` WHERE tec_code = '" . $db->escape($codet) . "'";
        $nbres = $db->get_var($rech);
        if ($nbres == 0) {
            $rech = "INSERT INTO `" . TBTEC . "`";
            $rech .= " (tec_datecrea,tec_codecrea,tec_datemod,tec_codemod,tec_emploi,tec_qualif,tec_niveau,tec_echelon,tec_coeff,tec_couleur,tec_codeage,tec_codedo,tec_codest,tec_code,tec_pass,tec_civilite,tec_prenom,tec_nom,tec_adr1,tec_adr2,tec_dep,tec_ville,tec_codepays,tec_telf,tec_fax,tec_telp,tec_email,tec_mess,tec_nota) VALUES";
            $rech .= " ('$datecrea','$codeuser','$datecrea','$codeuser','" . $db->escape($emploi) . "','" . $db->escape($qualif) . "','" . $db->escape($niveau) . "','" . $db->escape($echelon) . "','$coeff','$couleur','$codeage','$codedo','$codest','$codet','$passcrypt','$civil','" . $db->escape($prenom) . "','" . $db->escape($nom) . "','" . $db->escape($adr1) . "','" . $db->escape($adr2) . "','$dep','$ville','$pays','$telf','$fax','$telp','$email','$mess','" . $db->escape($nota) . "')";

            $db->query($rech);

            // Ajout du compte pour connexion
            // Niveau par défaut : 3/7/11
            // Actif par défaut
            switch ($tl) {
                case 1 :
                    $nivpw = 3;
                    break;
                case 2 :
                    $nivpw = 7;
                    break;
                case 3 :
                    $nivpw = 11;
                    break;
                default :
                    break;
            }
            $log_ip = $_SERVER['REMOTE_ADDR']; // Récupération adresse IP
            $rech = "INSERT INTO `" . TBPW . "` (pw_code,pw_pass,pw_level,pw_lastsuccess,pw_lastip,pw_actif) VALUES ('$codet','$passcrypt','$nivpw','$dateheurea','$log_ip','1')";
            $db->query($rech);

            $msg = _("Fiche ajoutée");
            $code = $codet;
        } else {
            $msg = _("Ce code existe déjà");
            $retourliste = FALSE;
        }
        $db->disconnect();

        if ($retourliste == TRUE) {
            switch ($tl) {
                case 1 :
                    // Envoi d'email vers le technicien
                    envoi_mail("", "Ouverture de votre compte technicien", "tec", "cre", "xxx", "tec", $codet, $pass, "", TRUE);
                    // Envoi d'email vers l'agence si pas créé par elle
                    if ((@$_SESSION["niv_log"] <> 4) AND (@$_SESSION["niv_log"] <> 3))
                        envoi_mail("", "Ouverture d'un compte technicien", "tec", "cre", "xxx", "age", $codet, $pass, "", FALSE);
                    // Envoi d'email vers le centre de gestion
                    envoi_mail("", "Création de technicien", "tec", "cre", "xxx", "cdg", $codet, "", "", FALSE);
                    break;
                case  2 :
                    // Envoi d'email vers le technicien
                    envoi_mail("", "Ouverture de votre compte technicien", "tec", "cre2", "xxx", "tec", $codet, $pass, "", TRUE);
                    // Envoi d'email vers le donneur d'ordre si pas créé par lui
                    if ((@$_SESSION["niv_log"] <> 7) AND (@$_SESSION["niv_log"] <> 6))
                        envoi_mail("", "Ouverture d'un compte technicien", "tec", "cre", "xxx", "do", $codet, $pass, "", FALSE);
                    // Envoi d'email vers le centre de gestion
                    envoi_mail("", "Création de technicien", "tec", "cre2", "xxx", "cdg", $codet, "", "", FALSE);
                    break;
                case  3 :
                    // Envoi d'email vers le technicien
                    envoi_mail("", "Ouverture de votre compte technicien", "tec", "cre3", "xxx", "tec", $codet, $pass, "", TRUE);
                    // Envoi d'email vers le sous-traitant si pas créé par lui
                    if ((@$_SESSION["niv_log"] <> 11) AND (@$_SESSION["niv_log"] <> 10))
                        envoi_mail("", "Ouverture d'un compte technicien", "tec", "cre", "xxx", "st", $codet, $pass, "", FALSE);
                    // Envoi d'email vers le centre de gestion
                    envoi_mail("", "création de technicien", "tec", "cre3", "xxx", "cdg", $codet, "", "", FALSE);
                    break;
                default :
                    break;
            }
        }
        break;

    // MAJ de la fiche Technicien
    case "edit" :
        $edit_ok = TRUE;

        if (datetolocal($dateout) <> "") // Si le technicien n'est plus salarié, quelques Contrôles sont nécessaires
        {
            // Vérifie si utilisé dans une fiche intervention non close
            if (exist_tec_in_int_ouv($code) == TRUE) {
                $edit_ok = FALSE;
                $msg = _("Il faut d'abord clore ou modifier les interventions en cours dont ce technicien est responsable");
                $msg .= "<br /><br />" . _("Avant de saisir une date de départ pour ce technicien");
            }

            // Vérifie si utilisé dans une fiche bon de travail non close
            if (exist_tec_in_ot_ouv($code) == TRUE) {
                $edit_ok = FALSE;
                $msg = _("Il faut d'abord clore ou modifier les bons de travail en cours dont ce technicien est responsable");
                $msg .= "<br /><br />" . _("Avant de saisir une date de départ pour ce technicien");
                $retourliste = FALSE;
            }
        }

        if ($edit_ok == TRUE) {
            $parti = 0;
            // Plus besoin de dates de congés si licencié
            if (datetolocal($dateout) <> "") {
                $dconges = "";
                $fconges = "";
                $parti = 1;
            }

            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

            // MAJ de la fiche Technicien
            $rech = "UPDATE `" . TBTEC . "` SET `tec_datemod`='" . $datea . "', `tec_codemod`='" . $codeuser . "', `tec_emploi`='" . $db->escape($emploi) . "', `tec_qualif`='" . $db->escape($qualif) . "',";
            $rech .= " `tec_niveau`='" . $db->escape($niveau) . "',`tec_echelon`='" . $db->escape($echelon) . "',`tec_coeff`='" . $db->escape($coeff) . "',`tec_couleur`='" . $couleur . "',`tec_congd`='" . $dconges . "',";
            $rech .= " `tec_congf`='" . $fconges . "', `tec_codeage`='" . $codeage . "', `tec_codedo`='" . $codedo . "', `tec_codest`='" . $codest . "', `tec_civilite`='" . $civil . "',";
            $rech .= " `tec_prenom`='" . $db->escape($prenom) . "', `tec_nom`='" . $db->escape($nom) . "', `tec_adr1`='" . $db->escape($adr1) . "', `tec_adr2`='" . $db->escape($adr2) . "', ";
            $rech .= "`tec_dep`='" . $dep . "', `tec_ville`='" . $ville . "', `tec_codepays`='" . $pays . "', `tec_telf`='" . $telf . "', ";
            $rech .= "`tec_fax`='" . $fax . "', `tec_telp`='" . $telp . "', `tec_email`='" . $email . "', `tec_mess`='" . $mess . "',";
            $rech .= " `tec_nota`='" . $db->escape($nota) . "', `tec_out`='" . $parti . "', `tec_dateout`='" . $dateout . "'  WHERE `tec_code` = '" . $db->escape($code) . "'";
            $db->query($rech);

            if (datetolocal($dateout) <> "") {
                // Désactivation du mot de passe rattaché
                $rech = "UPDATE `" . TBPW . "` SET `pw_actif`='0'  WHERE `pw_code` = '" . $db->escape($code) . "'";
                $db->query($rech);

                // On rend l'agence employeur propriétaire des fichiers de ce technicien
                $rech = "UPDATE `" . TBFIC;
                $rech .= "` SET `fic_codecrea`='" . @$_SESSION["code_age"] . "'  WHERE `fic_codecrea` = '" . $db->escape($code) . "'";
                $db->query($rech);

            }

            $db->disconnect();

            $msg = _("Fiche modifiée");

            if (datetolocal($dateout) <> "") {
                switch ($tl) {
                    case 1 :
                        // Envoi d'email vers l'agence si licenciement pas effectué par elle
                        if ((@$_SESSION["niv_log"] <> 4) AND (@$_SESSION["niv_log"] <> 3))
                            envoi_mail("", "Départ d'un technicien", "tec", "lic", "xxx", "age", $code, "", "", FALSE);
                        // Envoi d'email vers le centre de gestion
                        envoi_mail("", "Départ de technicien", "tec", "lic", "xxx", "cdg", $code, "", "", TRUE);
                        break;
                    case  2 :
                        // Envoi d'email vers le donneur d'ordres si licenciement pas effectué par lui
                        if ((@$_SESSION["niv_log"] <> 7) AND (@$_SESSION["niv_log"] <> 6))
                            envoi_mail("", "Départ d'un technicien", "tec", "lic", "xxx", "do", $code, "", "", FALSE);
                        // Envoi d'email vers le centre de gestion
                        envoi_mail("", "Départ de technicien", "tec", "lic2", "xxx", "cdg", $code, "", "", TRUE);
                        break;
                    case  3 :
                        // Envoi d'email vers le sous-traitant si licenciement pas effectué par lui
                        if ((@$_SESSION["niv_log"] <> 11) AND (@$_SESSION["niv_log"] <> 10))
                            envoi_mail("", "Départ d'un technicien", "tec", "lic", "xxx", "st", $code, "", "", FALSE);
                        // Envoi d'email vers le centre de gestion
                        envoi_mail("", "Départ de technicien", "tec", "lic3", "xxx", "cdg", $code, "", "", TRUE);
                        break;
                    default :
                        break;
                }
            }
        } else
            $retourliste = FALSE;
        break;

    // Suppression de la fiche Technicien
    case "del" :
        $del_ok = TRUE;
        $msg = "";

        // Vérifie si utilisé dans une fiche intervention
        if (exist_tec_in_int($code) == TRUE) {
            $del_ok = FALSE;
            $msg = _("Ce technicien est présent dans une fiche intervention") . '<br />' . _("Si vous voulez le désactiver, il suffit de le passer en mode 'licencié'");
        }

        // Vérifie si utilisé dans une fiche intervention en temps que code de création
        if (exist_in_int_codecrea($code) == TRUE) {
            $$del_ok = FALSE;
            if ($msg <> "")
                $msg .= "<br /><br />";
            $msg .= _("Ce technicien a déjà saisi des interventions (vous ne pouvez ne pouvez pas le supprimer)") . '<br />' . _("Si vous voulez le désactiver, il suffit de le noter 'licencié'");
        }

        // Vérifie si utilisé dans une fiche bon de travail
        if (exist_tec_in_ot($code) == TRUE) {
            $del_ok = FALSE;
            if ($msg <> "")
                $msg .= "<br /><br />";
            $msg .= _("Ce technicien a déjà saisi des bons de travail (vous ne pouvez ne pouvez pas le supprimer)") . '<br />' . _("Si vous voulez le désactiver, il suffit de le noter 'licencié'");
        }

        // Vérifie si utilisé dans une fiche relevé licences
        if (exist_tec_in_rl($code) == TRUE) {
            $del_ok = FALSE;
            if ($msg <> "")
                $msg .= "<br /><br />";
            $msg .= _("Ce technicien est présent dans une fiche relevé licence") . '<br />' . _("Si vous voulez le désactiver, il suffit de le passer en mode 'licencié'");
        }

        // Vérifie si utilisé dans une fiche relevé produits
        if (exist_tec_in_rp($code) == TRUE) {
            $$del_ok = FALSE;
            if ($msg <> "")
                $msg .= "<br /><br />";
            $msg .= _("Ce technicien est présent dans une fiche relevé matériel") . '<br />' . _("Si vous voulez le désactiver, il suffit de le passer en mode 'licencié'");
        }

        if ($del_ok == TRUE) {
            switch ($tl) {
                case 1 :
                    if (trim($codest) <> "") {
                        // Envoi d'email vers l'agence si suppression pas effectuée par elle
                        if ((@$_SESSION["niv_log"] <> 4) AND (@$_SESSION["niv_log"] <> 3))
                            envoi_mail("", "Suppression d'un technicien", "tec", "del", "xxx", "age", $code, "", "", FALSE);
                        // Envoi d'email vers le centre de gestion
                        envoi_mail("", "Suppression de technicien", "tec", "del", "xxx", "cdg", $code, "", "", TRUE);
                    }
                    break;
                case  2 :
                    // Envoi d'email vers le donneur d'ordres si suppression pas effectuée par lui
                    if ((@$_SESSION["niv_log"] <> 7) AND (@$_SESSION["niv_log"] <> 6))
                        envoi_mail("", "Suppression d'un technicien", "tec", "del", "xxx", "do", $code, "", "", FALSE);
                    // Envoi d'email vers le centre de gestion
                    envoi_mail("", "Suppression de technicien", "tec", "del2", "xxx", "cdg", $code, "", "", TRUE);
                    break;
                case  3 :
                    if (trim($codeage) <> "") {
                        // Envoi d'email vers le sous-traitant si suppression pas effectuée par lui
                        if ((@$_SESSION["niv_log"] <> 11) AND (@$_SESSION["niv_log"] <> 10))
                            envoi_mail("", "Suppression d'un technicien", "tec", "del", "xxx", "st", $code, "", "", FALSE);
                        // Envoi d'email vers le centre de gestion
                        envoi_mail("", "Suppression de technicien", "tec", "del3", "xxx", "cdg", $code, "", "", TRUE);
                    }
                    break;
                default :
                    break;
            }

            $db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);

            switch ($tl) {
                case 1 :
                    // On rend l'agence employeur propriétaire des fichiers de ce technicien
                    $rech = "UPDATE `" . TBFIC;
                    $rech .= "` SET `fic_codecrea`='" . $codeage . "'  WHERE `fic_codecrea` = '" . $db->escape($code) . "'";
                    $db->query($rech);

                    if (trim($codest) == "") // C'est un technicien "uniquement" agence
                    {
                        // Suppression du compte technicien
                        $rech = "DELETE FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);

                        // Suppression des prix de revient technicien
                        $rech = "DELETE FROM `" . TBTECPR . "` WHERE `tecpr_codetec` = '" . $db->escape($code) . "'";
                        $db->query($rech);

                        // Suppression du mot de passe rattaché
                        $rech = "DELETE FROM `" . TBPW . "` WHERE `pw_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);
                    } else {
                        // RAZ du code agence
                        $rech = "UPDATE `" . TBTEC;
                        $rech .= "` SET `tec_codeage`=''  WHERE `tec_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);
                    }
                    break;
                case 2 :
                    // Suppression du compte technicien
                    $rech = "DELETE FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($code) . "'";
                    $db->query($rech);

                    // Suppression des prix de revient technicien
                    $rech = "DELETE FROM `" . TBTECPR . "` WHERE `tecpr_codetec` = '" . $db->escape($code) . "'";
                    $db->query($rech);

                    // Suppression du mot de passe rattaché
                    $rech = "DELETE FROM `" . TBPW . "` WHERE `pw_code` = '" . $db->escape($code) . "'";
                    $db->query($rech);
                    break;
                case 3 :
                    if (trim($codeage) == "") // C'est un technicien "uniquement" sous-traitant
                    {
                        // Suppression du compte technicien
                        $rech = "DELETE FROM `" . TBTEC . "` WHERE `tec_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);

                        // Suppression des prix de revient technicien
                        $rech = "DELETE FROM `" . TBTECPR . "` WHERE `tecpr_codetec` = '" . $db->escape($code) . "'";
                        $db->query($rech);

                        // Suppression du mot de passe rattaché
                        $rech = "DELETE FROM `" . TBPW . "` WHERE `pw_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);
                    } else {
                        // RAZ du code sous-traitant
                        $rech = "UPDATE `" . TBTEC;
                        $rech .= "` SET `tec_codest`=''  WHERE `tec_code` = '" . $db->escape($code) . "'";
                        $db->query($rech);
                    }
                    break;
            }

            $db->disconnect();

            $msg = _("Fiche supprimée");
        }
        break;
    default :
        break;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>SMI - <?PHP echo _("ESPACE PRIVE"); ?> : <?PHP echo _("Fiche Technicien"); ?></title>

    <?PHP include_once("../inc/header.inc.php"); ?>

    <script type="text/javascript">
        <!--
        function init_all() {
            init_Body();
            Focus_first();
        }

        $(document).ready(function () {
            init_all();
        });
        //-->
    </script>

</head>
<body>
<?php include_once("../inc/entete.inc.php"); ?>

<p align="center"><span class="titrepage"><?PHP echo $titre ?></span></p>

<p align="center">&nbsp;</p>
<?PHP
if ($retourliste == FALSE) {
    exec_func_js("warn_txt('" . str_escape($msg) . "')");
    if (($td == "add") OR ($td == "edit"))
        aff_ret_idx_man($td, "tec_lst.php?td=std&tl=" . $tl, _("Retour à la liste"), TRUE);
} else {
    if ($td == "add")
        pop_ret_auto($msg, 'ok', "tec_maj.php?td=edit&code=" . $code . "&dep=" . $dep . "&tl=" . $tl);
    else
        pop_ret_auto($msg, 'ok', "tec_lst.php?td=std&tl=" . $tl);
}
include_once("pied.php");
?>
</body>
</html>