<?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/fic_age.inc.php");
include_once("../inc/fic_cli.inc.php");
include_once("../inc/fic_dos.inc.php");
include_once("../inc/fic_droits.inc.php");
include_once("../inc/fic_hum.inc.php");
include_once("../inc/fic_int.inc.php");
include_once("../inc/fic_loc.inc.php");
include_once("../inc/fic_ot.inc.php");
include_once("../inc/fic_plan.inc.php");
include_once("../inc/fic_rdv.inc.php");
include_once("../inc/fic_tec.inc.php");
include_once("../inc/fic_tra.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_geo.inc.php");
include_once("../inc/func_mail.inc.php");
include_once("../inc/func_time.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("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"]);
check_modules();

// Variables Formulaire
fix_magic_quotes();
$_POST = clean_str($_POST);

$titre = @$_POST["titre"];
$td = @$_POST["td"];
$from = @$_POST["from"];
$tx = @$_POST["tx"];
$iev = intval(@$_POST["iev"]);
$retour_planning = @$_POST["retpl"];
$retour_liste = @$_POST["retlst"];
if (@$_POST["del"] == _("Supprimer"))
    $td = "del";

$typdest = intval(@$_POST["typdest"]);
$dest = str_majuscules(@$_POST["dest"]);
switch ($typdest) {
    case 5 :
        $dest = "CGE";
        break;
    case 6 :
        $dest = $admin_code;
        break;
}
$prive = intval(@$_POST["prive"]);
$cat = @$_POST["cat"];
$typrat = intval(@$_POST["typrat"]);
$coderat = str_majuscules(@$_POST["rat"]);
if ($coderat == "")
    $typrat = -1;
// Si pas de pièce rattachée pas possible de rendre privé
if ($typrat <> -1)
    $prive = 0;
$idrdv = intval(@$_POST["rdv"]);
$urg = @$_POST["urgence"];
$datetolocal = @$_POST["date"];
$date = datetomysql(@$_POST["date"]);
$heure = @$_POST["heure"];
if ($heure <> "")
    $heure .= ":00";
$duree = intval(@$_POST["dur"]);
$codelieu = @$_POST["codelieu"];
$tit = str_majuscules(@$_POST["tit"]);
$detail = @$_POST["detail"];

$codeuser = @$_SESSION["code_log"];
$retourliste = TRUE;
$msg = "";
$msg_alert = "";
$titre_tra = "";

$db = open_database(DBUSER, DBPASS, DBNAME, DBHOST);
switch ($td) {
    // Ajout de la fiche Evenement
    case "add" :
        // MAJ RDV rattaché
        $rech2 = "";
        $ok_add_evt = TRUE;
        $cree_rdv = FALSE;
        $ex_idrdv = 0;

        switch ($typrat) {
            // Rien
            case -1 :
                $titre_tra = _("Création d'un évènement planning");
                break;
            // Interventions
            case 1 :
                if ($coderat <> "") {
                    $titre_tra = _("Modification de l'intervention") . " " . $coderat;
                    // Pas encore de RDV saisi : on crée
                    if ($idrdv == 0) {
                        $cree_rdv = TRUE;

                        $rech2 = "INSERT INTO `" . TBRDV . "`";
                        $rech2 .= " (rdv_datecrea,rdv_codecrea,rdv_datemod,rdv_codemod,rdv_typrat,rdv_coderat,rdv_date,rdv_codelieu,";
                        $rech2 .= "rdv_heure,rdv_dureem,rdv_nivurg)";
                        $rech2 .= " VALUES";
                        $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','1','$coderat','$date','$codelieu',";
                        $rech2 .= "'$heure','$duree','$urg')";
                    } else // RDV déjà saisi : on met à jour
                    {
                        // On vérifie les évènements rattachés à ce RDV
                        $rech3 = "SELECT * FROM `" . TBPEVT . "` WHERE pevt_idrdv = '$idrdv'";
                        $rech3 .= " AND pevt_dest <> '$dest'";
                        $rows3 = $db->get_results($rech3, ARRAY_A);
                        // Ce RDV a été affecté au planning sur une ou des autres personnes
                        // On vérifie que les données des évènements en question sont les mêmes que le RDV
                        // que l'on vient d'appliquer au planning
                        if ($rows3) {
                            foreach ($rows3 as $row3) {
                                extract($row3);
                                // Si différent, on crée un RDV complémentaire
                                if (($pevt_date <> $date) OR ($pevt_heure <> $heure) OR ($pevt_dureem <> $duree) OR ($pevt_codelieu <> $codelieu) OR ($pevt_nivurg <> $urg))
                                    $cree_rdv = TRUE;
                            }
                        }

                        // Si RDV pas encore affecté, on peut directement mettre à jour ce RDV
                        if ($cree_rdv == FALSE) {
                            $rech2 = "UPDATE `" . TBRDV . "` SET `rdv_datemod`='" . $datea . "', `rdv_codemod`='" . $codeuser . "',";
                            $rech2 .= " `rdv_date`='" . $date . "',`rdv_codelieu`='" . $codelieu . "', `rdv_heure`='" . $heure . "',";
                            $rech2 .= " `rdv_dureem`='" . $duree . "', `rdv_nivurg`='" . $urg . "'";
                            $rech2 .= " WHERE `rdv_id` = '" . $idrdv . "'";
                        } else {
                            $ex_idrdv = $idrdv;

                            $rech2 = "INSERT INTO `" . TBRDV . "`";
                            $rech2 .= " (rdv_datecrea,rdv_codecrea,rdv_datemod,rdv_codemod,rdv_typrat,rdv_coderat,rdv_date,rdv_codelieu,";
                            $rech2 .= "rdv_heure,rdv_dureem,rdv_nivurg)";
                            $rech2 .= " VALUES";
                            $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','1','$coderat','$date','$codelieu',";
                            $rech2 .= "'$heure','$duree','$urg')";
                        }
                    }
                } else
                    $ok_add_evt = FALSE;
                break;
            // Bon de travail
            case 2 :
                break;
        }

        if ($rech2 <> "")
            $db->query($rech2);

        if ($cree_rdv == TRUE)
            $idrdv = $db->insert_id;

        // Si $ex_idrdv (on crée mais il y avait déjà un RDV de saisi),
        // il faut supprimer l'évènement rattaché, avec cette personne, sur ce RDV
        if ($ex_idrdv <> 0) {
            $rech2 = "DELETE FROM `" . TBPEVT . "` WHERE `pevt_idrdv` = '$idrdv' AND `pevt_dest` = '$dest'";
            $db->query($rech2);
        }

        // On ajoute l'évènement au planning
        if ($ok_add_evt == TRUE) {
            $rech2 = "INSERT INTO `" . TBPEVT . "`";
            $rech2 .= " (pevt_datecrea,pevt_codecrea,pevt_datemod,pevt_codemod,pevt_gest,pevt_typdest,pevt_dest,";
            $rech2 .= "pevt_typrat,pevt_coderat,pevt_idrdv,pevt_date,pevt_heure,";
            $rech2 .= "pevt_dureem,pevt_titre,pevt_detail,pevt_codelieu,pevt_codecat,pevt_nivurg,pevt_prive) VALUES";
            $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','$codeuser','$typdest','$dest','$typrat','$coderat',";
            $rech2 .= "'$idrdv','$date','$heure','$duree','" . $db->escape($tit) . "','" . $db->escape($detail) . "','$codelieu','$cat','$urg','$prive')";

            $db->query($rech2);

            $desc_tra = _("Ajout d'un évènement planning");
            $desc_tra .= chr(13) . chr(10);
            $desc_tra .= "(" . $dest . " : " . _("le") . " " . datetolocal($date) . " " . _("à") . " " . substr($heure, 0, 5) . ")";
            add_trace($typrat, $coderat, "CREP", $titre_tra, $desc_tra, FALSE);
        }

        // traçabilité
        // Si en mode création (intervention pas encore enregistrée) : pas de traçabilité détaillée
        if ($cree_rdv == TRUE) {
            $desc_tra = _("Ajout d'une date de rendez-vous");
            $desc_tra .= chr(13) . chr(10);
            $desc_tra .= "(Le " . datetolocal($date) . " à " . substr($heure, 0, 5) . ")";
            add_trace($typrat, $coderat, "CRER", $titre_tra, $desc_tra, FALSE);
        }

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

        $db->disconnect();

        /*
                if ($retourliste == TRUE)
                {
                    // Envoi d'email vers l'agence
                    envoi_mail("","Ouverture de votre compte agence","age","cre","xxx","age",$codea,$pass,"",TRUE);
                    // Envoi d'email vers le centre de gestion
                    envoi_mail("","Ouverture d'un compte agence","age","cre","xxx","cdg",$codea,$pass,"",FALSE);

                    if ($st==TRUE)
                    {
                        // Envoi d'email vers l'agence
                        envoi_mail("","Ouverture de votre compte sous-traitant","st","cre","xxx","st",$codes,$pass,"",TRUE);
                        // Envoi d'email vers le centre de gestion
                        envoi_mail("","Ouverture d'un compte sous-traitant","st","cre","xxx","cdg",$codes,$pass,"",FALSE);
                    }
                }
        */
        break;

    // MAJ de la fiche Evènement
    case "edit" :
        // MAJ RDV rattaché
        $rech2 = "";
        $ok_edit_evt = TRUE;
        $cree_rdv = FALSE;
        $ex_idrdv = 0;

        switch ($typrat) {
            // Rien
            case -1 :
                $titre_tra = _("Modification d'un évènement planning");
                break;
            // Interventions
            case 1 :
                if ($coderat <> "") {
                    $titre_tra = _("Modification de l'intervention") . " " . $coderat;
                    // Pas encore de RDV saisi : on crée
                    if ($idrdv == 0) {
                        $cree_rdv = TRUE;

                        $rech2 = "INSERT INTO `" . TBRDV . "`";
                        $rech2 .= " (rdv_datecrea,rdv_codecrea,rdv_datemod,rdv_codemod,rdv_typrat,rdv_coderat,rdv_date,rdv_codelieu,";
                        $rech2 .= "rdv_heure,rdv_dureem,rdv_nivurg)";
                        $rech2 .= " VALUES";
                        $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','1','$coderat','$date','$codelieu',";
                        $rech2 .= "'$heure','$duree','$urg')";
                    } else // RDV déjà saisi : on met à jour
                    {
                        // On vérifie les évènements rattachés à ce RDV
                        $rech = "SELECT * FROM `" . TBPEVT . "` WHERE pevt_idrdv = '$idrdv'";
                        $rech .= " AND pevt_dest <> '$dest'";
                        $rows = $db->get_results($rech, ARRAY_A);
                        // Ce RDV a été affecté au planning sur une ou des autres personnes
                        // On vérifie que les données des évènements en question sont les mêmes que le RDV
                        // que l'on vient d'appliquer au planning
                        if ($rows) {
                            foreach ($rows as $row) {
                                extract($row);
                                // Si différent, on crée un RDV complémentaire
                                if (($pevt_date <> $date) OR ($pevt_heure <> $heure) OR ($pevt_dureem <> $duree) OR ($pevt_codelieu <> $codelieu) OR ($pevt_nivurg <> $urg))
                                    $cree_rdv = TRUE;
                            }
                        }

                        // Si RDV pas encore affecté, on peut directement mettre à jour ce RDV
                        if ($cree_rdv == FALSE) {
                            $rech2 = "UPDATE `" . TBRDV . "` SET `rdv_datemod`='" . $datea . "', `rdv_codemod`='" . $codeuser . "',";
                            $rech2 .= " `rdv_date`='" . $date . "',`rdv_codelieu`='" . $codelieu . "', `rdv_heure`='" . $heure . "',";
                            $rech2 .= " `rdv_dureem`='" . $duree . "', `rdv_nivurg`='" . $urg . "'";
                            $rech2 .= " WHERE `rdv_id` = '" . $idrdv . "'";
                        } else {
                            $ex_idrdv = $idrdv;

                            $rech2 = "INSERT INTO `" . TBRDV . "`";
                            $rech2 .= " (rdv_datecrea,rdv_codecrea,rdv_datemod,rdv_codemod,rdv_typrat,rdv_coderat,rdv_date,rdv_codelieu,";
                            $rech2 .= "rdv_heure,rdv_dureem,rdv_nivurg)";
                            $rech2 .= " VALUES";
                            $rech2 .= " ('$datea','$codeuser','$datea','$codeuser','1','$coderat','$date','$codelieu',";
                            $rech2 .= "'$heure','$duree','$urg')";
                        }
                    }
                }
                break;
            // Bon de travail
            case 2 :
                break;
        }
        // On récupère l'enregistrement précédent (traçabilité)
        if ($cree_rdv == FALSE) {
            $detailsaisi = "";
            $ex_enrrdv = lit_enr_rdv_id($idrdv, FALSE, "assoc");
        }

        if ($rech2 <> "")
            $db->query($rech2);

        if ($cree_rdv == TRUE)
            $idrdv = $db->insert_id;

        // Si $ex_idrdv (on crée mais il y avait déjà un RDV de saisi),
        // il faut supprimer l'évènement rattaché, avec cette personne, sur ce RDV
        if ($ex_idrdv <> 0) {
            $rech2 = "DELETE FROM `" . TBPEVT . "` WHERE `pevt_idrdv` = '$ex_idrdv' AND `pevt_dest` = '$dest'";
            $db->query($rech2);
        }

        // On met à jour l'évènement au planning
        if ($ok_edit_evt == TRUE) {
            $rech2 = "UPDATE `" . TBPEVT . "` SET `pevt_datemod`='" . $datea . "', `pevt_codemod`='" . $codeuser . "',";
            $rech2 .= " `pevt_date`='" . $date . "', `pevt_heure`='" . $heure . "', `pevt_dureem`='" . $duree . "',";
            $rech2 .= " `pevt_titre`='" . $db->escape($tit) . "', `pevt_detail`='" . $db->escape($detail) . "', `pevt_codelieu`='" . $codelieu . "',";
            $rech2 .= " `pevt_codecat`='" . $cat . "', `pevt_typrat`='" . $typrat . "',  `pevt_coderat`='" . $coderat . "',";
            $rech2 .= " `pevt_idrdv`='" . $idrdv . "',`pevt_nivurg`='" . $urg . "', `pevt_prive`='" . $prive . "'";
            $rech2 .= " WHERE `pevt_id` = '" . $iev . "'";

            $db->query($rech2);

            // traçabilité
            $desc_tra = _("Modification d'un évènement planning");
            $desc_tra .= chr(13) . chr(10);
            $desc_tra .= "(" . $dest . " : " . _("le") . " " . datetolocal($date) . " " . _("à") . " " . substr($heure, 0, 5) . ")";
            add_trace($typrat, $coderat, "MOEP", $titre_tra, $desc_tra, FALSE);
        }

        // traçabilité
        // Si en mode création (intervention pas encore enregistrée) : pas de traçabilité détaillée
        if ($cree_rdv == TRUE) {
            $desc_tra = _("Ajout d'une date de rendez-vous");
            $desc_tra .= chr(13) . chr(10);
            $desc_tra .= "(" . _("Le") . " " . datetolocal($date) . " " . _("à") . " " . substr($heure, 0, 5) . ")";
            add_trace($typrat, $coderat, "CRER", $titre_tra, $desc_tra, FALSE);
        } else {
            // On récupère l'enregistrement actuel (traçabilité)
            $nouv_enrrdv = lit_enr_rdv_id($idrdv, FALSE, "assoc");

            // On compare les éléments d'enregistrement pour traçabilité
            $trace_added = analyse_trace("rdv", $ex_enrrdv, $nouv_enrrdv, $detailsaisi, FALSE);
        }

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

        $db->disconnect();
        break;

    // Suppression de la fiche Evènement
    case "del" :
        // MAJ évènement, pièce rattachée
        // et évènements impactés (si intervention ou bon de travail)
        switch (intval($typrat)) {
            // Rien
            case -1 :
                // On récupère l'enregistrement actuel (traçabilité)
                $titre_tra = _("Modification d'un évènement planning");

                $rech = "DELETE FROM `" . TBPEVT . "` WHERE `pevt_id` = '$iev'";
                $db->query($rech);

                // traçabilité
                $desc_tra = _("Suppression d'un évènement planning");
                $desc_tra .= chr(13) . chr(10);
                $desc_tra .= "(" . $pevt_dest . " : " . _("le") . " " . datetolocal($pevt_date) . " " . _("à") . " " . substr($pevt_heure, 0, 5) . ")";
                add_trace($typrat, $coderat, "CREP", $titre_tra, $desc_tra, FALSE);
                break;

            // Interventions
            case 1 :
                if ($coderat <> "") {
                    $titre_tra = _("Modification de l'intervention") . " " . $coderat;
                    // SI RDV rattaché
                    if ($idrdv > 0) {
                        switch (@$_SESSION["niv_log"]) {
                            case 10 :
                            case 11 :
                                break;
                            default :
                                // On récupère l'enregistrement actuel (traçabilité)
                                $row = lit_enr_rdv_id($idrdv, FALSE);
                                if (is_array($row) == TRUE) {
                                    extract($row);

                                    // On supprime l'évènement du planning
                                    $rech = "DELETE FROM `" . TBPEVT . "` WHERE `pevt_idrdv` = '$idrdv' AND `pevt_dest` = '$dest'";
                                    $db->query($rech);

                                    // traçabilité
                                    $desc_tra = _("Suppression d'un évènement planning");
                                    $desc_tra .= chr(13) . chr(10);
                                    $desc_tra .= "(" . $pevt_dest . " : " . _("le") . " " . datetolocal($pevt_date) . " " . _("à") . " " . substr($pevt_heure, 0, 5) . ")";
                                    add_trace($typrat, $coderat, "CREP", $titre_tra, $desc_tra, FALSE);
                                }
                                break;
                        }
                    } else {
                        $rech = "DELETE FROM `" . TBPEVT . "` WHERE `pevt_id` = '$iev'";
                        $db->query($rech);

                        // traçabilité
                        $desc_tra = _("Suppression d'un évènement planning");
                        $desc_tra .= chr(13) . chr(10);
                        $desc_tra .= "(" . $pevt_dest . " : " . _("le") . " " . datetolocal($pevt_date) . " " . _("à") . " " . substr($pevt_heure, 0, 5) . ")";
                        add_trace($typrat, $coderat, "CREP", $titre_tra, $desc_tra, FALSE);
                    }
                }
                break;
            // Bon de travail
            case 2 :
                break;
        }

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

        $db->disconnect();
        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 _("Planning (Ajout / Edition)"); ?></title>

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

    <script type="text/javascript">
        <!--
        <?PHP
        if ($retourliste == TRUE)
        {
            switch($tx)
            {
                case "tecla" :
                    cre_html_trdv('detmrdv','edit',$coderat,'window.opener.');
                    break;
                default :
                    break;
            }
        }
        ?>

        function init_all() {
            init_Body();
            <?PHP
            if ($retourliste == TRUE)
            {
                switch($tx)
                {
                    case "tec" :
                        echo 'self.close();';
                        break;
                    case "tecla" :
                        echo 'updatmrdv();';
                        echo 'self.close();';
                        break;
                    case "intl" :
                    case "tecl" :
                    case "agel" :
                        echo 'window.opener.location.reload(true);';
                        echo 'self.close();';
                        break;
                    case "int" :
                        break;
                    case "pla" :
                        $url = 'plan_maj.php?typd='.$typdest.'&coded='.$dest.'&typr='.$typrat.'&coder='.$coderat.'&from='.$from.'&tx='.$tx.'&dte='.datetolocal($date);
            ?>
            var obj = window.opener.document.getElementById("dte");
            if (obj) {
                window.opener.location.href = '<?PHP echo $url; ?>';
                self.close();
            }
            else {
                window.location.href = '<?PHP echo $url; ?>';
            }
            <?PHP
                        break;
                }
            }
            ?>
            Focus_first();
        }

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

</head>
<body>

<?PHP
if ($retourliste == FALSE) {
    echo '<p align="center"><span class="titrepage">' . $titre . '</span></p>';
    echo '<p align="center">&nbsp;</p>';
    echo '<p align="center">';
    echo '<span class="alerte1">';
    echo $msg;
    echo '</span>';
    echo '</p>';
}
?>
</body>
</html>