<?php
/****************************************************************************************
 * SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV
 *
 * Version 1.0.4
 *
 * Copyright (C) 2006-2016  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) {
    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_fic.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('../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(valsession('code_log'));
check_modules();

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

$titre = valpost('titre');
$td = valpost('td');
$from = valpost('from');
$tx = valpost('tx');
$iev = (int)valpost('iev');
$retour_planning = valpost('retpl');
$retour_liste = valpost('retlst');
if (valpost('del') == _('Supprimer')) {
    $td = 'del';
}

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

$codeuser = valsession('code_log');
$retourliste = TRUE;
$msg = '';
$msg_alert = '';
$titre_tra = '';

$db = open_database(DBUSER, DBPASS, DBNAME, DBHOST, 'utf8');
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');

        close_database();

        /*
                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');

        close_database();
        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 ((int)$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 (valsession('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');

        close_database();
        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() {
            var obj;
            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);
            ?>
            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) {
    cre_ent_form($titre, '', '', '', FALSE);
    echo '<p align="center">';
    echo '<span class="alerte1">';
    echo $msg;
    echo '</span>';
    echo '</p>';
}
?>
</body>
</html>