<?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');
$ok_inc = FALSE;
if ($pos === FALSE) {
    $ok_inc = TRUE;
}
if ($ok_inc == FALSE) {
    header('Location: ../index.php');
}

include_once('../inc/fic_droits.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_txt.inc.php');
include_once('../inc/lst.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'));
// Variables Formulaire
fix_magic_quotes();
$_GET = clean_str($_GET);

$_SESSION['typ_filtres'] = 'tac';

$fi = '';
if (isset($_GET['fi']) && (trim($_GET['fi']) <> '')) {
    $fi = (int)$_GET['fi'];
}
?>
<!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 _('Liste Tâches'); ?></title>

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

    <script type="text/javascript">
        <!--
        function init_all() {
            init_Body();
            init_autohref_classe('falselnkimg', '<?php echo str_escape(_('Merci de confirmer').'<br />'._("Sinon, cliquez sur 'Annuler'")); ?>');
            <?php if (($td=='view') OR ($td=='del')) {echo 'readonly_all();';} ?>
            <?php if ($td=='del') {echo "warn_del('');";} ?>
            Focus_first();
        }

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

<body>
<?php
include_once('../inc/entete.inc.php');
if (valsession('niv_log') >= 5) {
    cre_ent_form(_('LISTE DES TACHES'), '', '', '', FALSE);
} else {
    cre_ent_form(_('VOS TACHES'), '', '', '', FALSE);
}

$fic_imp = 'tac_lsti.php';
$url_add = 'tac_maj.php?td=add';
$tab_fi[] = _('Toutes les tâches');
$tab_fi[] = _('Tâches non closes');
$tab_fi[] = _('Tâches closes');
if (CheckNivLog('3-4-5-9')) {
    $tab_fi[] = _('Tâches rattachées à des interventions');
    $tab_fi[] = _('Tâches rattachées à des contrats de maintenance');
    $tab_fi[] = _('Tâches rattachées à des contrats de location');
    $tab_fi[] = _('Tâches rattachées à des dossiers de suivi');
    $tab_fi[] = _('Tâches rattachées à des relevés de parc');
}
if (CheckNivLog('10-11-5-9')) {
    $tab_fi[8] = _('Tâches rattachées à des bons de travail');
}
$tab_fi[9] = _('Tâches que vous avez ordonnées');
$url_rss = lien_rss(valsession('code_log'), valsession('niv_log'), 'tac');

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

$rech = cree_strrechlsttac();
switch (valsession('niv_log')) {
    // Filtre pour les techniciens agences ou sous-traitants
    case 3 :
    case 11 :
        // Si filtre N°9,  on ne prend pas en compte les tâche à faire, mais seulement celles ordonnées
        // On autorise aussi les auteurs à voir les tâches qu'ils ont créé
        if ($fi <> 9) {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE (' . TBTAC . ".tac_codedest='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND (' . TBTAC . ".tac_codedest='" . valsession('code_log') . "'";
            }
            $rech .= ' OR ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "')";
        } else {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            }
        }
        break;
    // Filtre pour les agences
    case 4 :
        // On construit la liste des techniciens actifs de l'agence
        $tab_lst_tec = [];
        $rech2 = 'SELECT tec_code FROM `' . TBTEC . "` WHERE tec_codeage='" . valsession('code_log') . "' AND tec_out=0";
        $rows2 = $db->get_results($rech2, ARRAY_A);
        foreach ($rows2 as $row2) {
            $row2 = encode_str($row2);
            extract($row2);
            $tab_lst_tec[] = $tec_code;
        }

        // Si filtre N°9,  on ne prend pas en compte les tâche à faire, mais seulement celles ordonnées
        // On autorise aussi les auteurs à voir les tâches qu'ils ont créé
        if ($fi <> 9) {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE ((' . TBTAC . ".tac_codedest='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND ((' . TBTAC . ".tac_codedest='" . valsession('code_log') . "'";
            }
            // Une agence peut voir les tâches de ses techniciens
            foreach ($tab_lst_tec as $key => $value) {
                $rech .= ' OR ' . TBTAC . ".tac_codedest='" . $value . "'";
            }
            $rech .= ')';
            // On autorise aussi les auteurs à voir les tâches qu'ils ont créé
            $rech .= ' OR (' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            // Une agence peut voir les tâches créées par ses techniciens
            foreach ($tab_lst_tec as $key => $value) {
                $rech .= ' OR ' . TBTAC . ".tac_codedest='" . $value . "'";
            }
            $rech .= '))';
        } else {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE (' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND (' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            }
            // Une agence peut voir les tâches de ses techniciens
            foreach ($tab_lst_tec as $key => $value) {
                $rech .= ' OR ' . TBTAC . ".tac_codecrea='" . $value . "'";
            }
            $rech .= ')';
        }
        break;
    // Filtre pour le centre de gestion
    case 5 :
        // Si filtre N°9,  on ne prend pas en compte les tâche à faire, mais seulement celles ordonnées
        // On autorise aussi les auteurs à voir les tâches qu'ils ont créé
        if ($fi <> 9) {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE (' . TBTAC . ".tac_codedest<>'" . $admin_code . "'";
            } else {
                $rech .= ' AND (' . TBTAC . ".tac_codedest<>'" . $admin_code . "'";
            }
            $rech .= ' OR ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "')";
        } else {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            }
        }
        break;
    // Filtre pour les sous-traitants
    case 10 :
        // On construit la liste des techniciens actifs du sous-traitant
        $tab_lst_tec = [];
        $rech2 = 'SELECT tec_code FROM `' . TBTEC . "` WHERE tec_codest='" . valsession('code_log') . "' AND tec_out=0";
        $rows2 = $db->get_results($rech2, ARRAY_A);
        foreach ($rows2 as $row2) {
            $row2 = encode_str($row2);
            extract($row2);
            $tab_lst_tec[] = $tec_code;
        }

        // Si filtre N°9,  on ne prend pas en compte les tâche à faire, mais seulement celles ordonnées
        // On autorise aussi les auteurs à voir les tâches qu'ils ont créé
        if ($fi <> 9) {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE ((' . TBTAC . ".tac_codedest='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND ((' . TBTAC . ".tac_codedest='" . valsession('code_log') . "'";
            }
            // Une agence peut voir les tâches de ses techniciens
            foreach ($tab_lst_tec as $key => $value) {
                $rech .= ' OR ' . TBTAC . ".tac_codedest='" . $value . "'";
            }
            $rech .= ')';
            // On autorise aussi les auteurs à voir les tâches qu'ils ont créé
            $rech .= ' OR (' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            // Une agence peut voir les tâches créées par ses techniciens
            foreach ($tab_lst_tec as $key => $value) {
                $rech .= ' OR ' . TBTAC . ".tac_codedest='" . $value . "'";
            }
            $rech .= '))';
        } else {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE (' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND (' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            }
            // Une agence peut voir les tâches de ses techniciens
            foreach ($tab_lst_tec as $key => $value) {
                $rech .= ' OR ' . TBTAC . ".tac_codecrea='" . $value . "'";
            }
            $rech .= ')';
        }
        break;
    // Filtre pour l'administrateur
    case 9 :
        // Si filtre N°9,  on ne prend pas en compte les tâche à faire, mais seulement celles ordonnées
        if ($fi == 9) {
            if (!stristr($rech, 'WHERE ')) {
                $rech .= ' WHERE ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            } else {
                $rech .= ' AND ' . TBTAC . ".tac_codecrea='" . valsession('code_log') . "'";
            }
        }
        break;
}

switch ($fi) {
    case 1 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= " WHERE tac_datefin='0000-00-00'";
        } else {
            $rech .= " AND tac_datefin='0000-00-00'";
        }
        break;
    case 2 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= " WHERE tac_datefin<>'0000-00-00'";
        } else {
            $rech .= " AND tac_datefin<>'0000-00-00'";
        }
        break;
    case 3 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= ' WHERE tac_typrat=1';
        } else {
            $rech .= ' AND tac_typrat=1';
        }
        break;
    case 4 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= ' WHERE tac_typrat=2';
        } else {
            $rech .= ' AND tac_typrat=2';
        }
        break;
    case 5 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= ' WHERE tac_typrat=3';
        } else {
            $rech .= ' AND tac_typrat=3';
        }
        break;
    case 6 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= ' WHERE tac_typrat=4';
        } else {
            $rech .= ' AND tac_typrat=4';
        }
        break;
    case 7 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= ' WHERE tac_typrat=5';
        } else {
            $rech .= ' AND tac_typrat=5';
        }
        break;
    case 8 :
        if (!stristr($rech, 'WHERE ')) {
            $rech .= ' WHERE tac_typrat=6';
        } else {
            $rech .= ' AND tac_typrat=6';
        }
        break;
    default :
        break;
}
$rech .= crestr_triord($tac_titre_col, 'tac_code', FALSE, $limit);

$rows = $db->get_results($rech, ARRAY_A);
close_database();

if ($rows) {
    $numrows = count($rows);
    include_once('formr.inc.php');

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

    $rech = modstr_triord($rech, $tac_titre_col, 'tac_code', TRUE, $limit);

    $rows = $db->get_results($rech, ARRAY_A);

    // *** Pagination de pied
    pagine_lst($numrows, $limit);

    // *** Affichage de la table
    echo '<table class="Mtable" border="0" width="100%" cellpadding="0" cellspacing="0">';

    // création entête
    titlst($tac_titre_col);
    echo '<th>' . _('Cliquer') . '</th>';

    $i = 0;

    // Inclusion module affichage liste tâches
    include_once('../inc/tacr_lst.inc.php');

    echo '</table>';
    // *** Fin affichage de la table

    close_database();

    // *** Pagination de pied
    pagine_lst($numrows, $limit);

    $taille_piedla = '';
    include_once('piedla.inc.php');
} else {
    retpp();
}

include_once('pied.php');
?>
</body>
</html>