Subversion Repositories Applications.gtt

Rev

Rev 2 | Go to most recent revision | Blame | Last modification | View Log | RSS feed

<?php

// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1                                                                                      |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or                                        |
// | modify it under the terms of the GNU Lesser General Public                                           |
// | License as published by the Free Software Foundation; either                                         |
// | version 2.1 of the License, or (at your option) any later version.                                   |
// |                                                                                                      |
// | This library 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                                    |
// | Lesser General Public License for more details.                                                      |
// |                                                                                                      |
// | You should have received a copy of the GNU Lesser General Public                                     |
// | License along with this library; if not, write to the Free Software                                  |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// |@author ABDOOL RAHEEM shaheen   shaheenar50@hotmail.com                                                 |
// |@version 3                                                                                            |

// +------------------------------------------------------------------------------------------------------+
/*
*fichier contenant le menu principal de l'application de gestion du temps de travail 
*@package gtt_general
//Auteur original :
*@author        Dorian Bannier <dbannier@aol.com>
//Autres auteurs :
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright     Copyright (C) 2003 Tela-Botanica
*/
// +------------------------------------------------------------------------------------------------------+
include_once CHEMIN_FN_GENERIQUE_AFFICHAGE;
include_once CHEMIN_MENU.'gtt_menu_travail.php';
include_once CHEMIN_CLASSES_METIER.'gtt_travail.class.php';
include_once CHEMIN_CLASSES_METIER.'gtt_taches.class.php';
include_once CHEMIN_CLASSES_METIER.'gtt_prevision_tache.class.php';
/**
*fonction verifiant si les heures rentrees sont bien valides
*verification si heure rentree dans une case <24 ou >0
*verifiaction si somme heure d'une journee<24
*/


function verifTempsTravail()
{
        $nb = $_POST['champ_nb_projet'];
        $res  = true;
        // Iniatilisation des variables
        $somme1 = $somme2 = $somme3 = $somme4 = $somme5 = $somme6 = $somme7 = 0;
    $verif_a_faire = false;
    // Tableau jour
    $tabJour = array(0 => "champ_lundi", 1 => "champ_mardi", "champ_mercredi", "champ_jeudi", "champ_vendredi", "champ_samedi", "champ_dimanche");
    
    for ($i = 0; $i < $nb; $i++) {   
                for ($j = 0; $j < count($tabJour); $j++) {
                    // On ne fait les tests que si des jours de travail ou de recuperation partielle
                    if ((isset($_POST[$tabJour[$j].$i]))and (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) or
                    ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j"))) {
                                $verif_a_faire = true;
                                //attribution de la limite selon le type de jour
                                if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
                                        $limite = 24;
                                } elseif ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j") {
                                        $limite = 12;
                                }
                                
                                if ((!(($_POST[$tabJour[$j].$i]<$limite)and ($_POST[$tabJour[$j].$i]>=0))) or
                                (empty($_POST[$tabJour[$j].$i])!=1 and is_numeric($_POST[$tabJour[$j].$i]) != 1)) {
                                    $res = false;
                                } else {
                                    switch ($j) {
                                        //cas lundi
                                        case 1:
                                        $somme1 += $_POST[$tabJour[$j].$i];
                                        break;
                                        //cas  mardi
                                        case 2 : 
                                        
                                        $somme2 += $_POST[$tabJour[$j].$i];
                                        break;
                                        
                                        //cas mercredi
                                        case 3 :
                                        $somme3 += $_POST[$tabJour[$j].$i];
                                        break;
                                        
                                        //cas jeudi
                                        case 4 :
                                        $somme4 += $_POST[$tabJour[$j].$i];
                                        break;
                                        //cas vendredi
                                        case 5 :
                                        $somme5 += $_POST[$tabJour[$j].$i];
                                        break;
                                        
                                        //cas samedi
                                        case 6 :
                                        $somme6 += $_POST[$tabJour[$j].$i];
                                        break;
                                        //cas dimanche
                                        
                                        case 7 :
                                        $somme7 += $_POST[$tabJour[$j].$i];
                                        break;
                                    } 
                                }
                    }
                }
    }
    
    //test si une des valeurs >24
    if(  $verif_a_faire == true) {
        $resultat=(($somme1<$limite)and ($somme2<$limite)and ($somme3<$limite)and ($somme4<$limite)and ($somme5<$limite)
        and ($somme6<$limite)and ($somme7<$limite)and ($res==true));
    } else {
        $resultat = true;
    }
        
        return $resultat;
}

/**
*fonction traitant l'ajout d'un champ travail dans la base
*@param : utilisateur
*/
function traiterSemaine($utilisateur)
{
        if (isset($_POST['champ_valider_travail']))     {
                // Récuperation de l'utilisateur
                $user1 = Utilisateur::recupererUtilisateur($utilisateur);
                // Parcours du tableau de jours
                $tabListeJour = array(0 =>'champ_lundi',1 =>'champ_mardi','champ_mercredi','champ_jeudi','champ_vendredi','champ_samedi','champ_dimanche');
                // Parcourt du tableau de jour 
                for ($nb = 0; $nb < $_POST["champ_nb_projet"]; $nb++) {
                    for($j = 0; $j < count($tabListeJour); $j++) {
                        // Test du type de jour
                        if (isset($_POST["champ_type_jour".$j])) {   
                            //cas  jour de travail ou recuperation partielle(recuperation partielle ne reduit pas le temps de travail
                            if (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_TRAVAIL)
                                or (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_RECUP_PART)
                                and ($_POST["champ_rtt_type_jour".$_POST["champ_type_jour".$j]] == 0))) {
                                
                                        //test si aucun conges prealablement rentre ne chevauche la date voulue
                                        //construction d'un objet absence equivalent a la date de travail
                                        $testAbs = new Absence($utilisateur,0,date('Y-m-d', $_POST["champ_date_j".$j]));
                                        $testAbs->setDateFin(date('Y-m-d', $_POST["champ_date_j".$j]));
                                        $tabAbsence = $testAbs->existeAbsence();
                                        // Booleen pour indiquer si on peut ajouter
                                        $possibleAjout = true;
                                        // Si chevauchement: verification si tous validee
                                        if (count($tabAbsence) > 0) {
                                            if ($testAbs->existeAbsenceValidee() == true) {
                                                        $possibleAjout = false;
                                                        $_POST[$tabListeJour[$j].$nb] = '';
                                                        $codeErreur = 2;
                                            } else {
                                                        //supression des absences non validees
                                                        for ($p = 0; $p < count($tabAbsence); $p++) {
                                                            $l = $tabAbsence[$p];
                                                            $absTemp2 = $testAbs;
                                                            $absTemp2->construireAbsence($l);
                                                            $nbJour2 = $absTemp2->getDureeAbsence();
                                                            // Mise a jour des quota heures sup et des conges payes de l'utilisateur
                                                            if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION) {
                                                                        $quotaTemp=$user1->getQuota();
                                                                        $user1->setQuota($quotaTemp+(($user1->getTempsTravail())*$nbJour2));
                                                            } elseif ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART) {
                                                                        $quotaTemp=$user1->getQuota();
                                                                        $user1->setQuota($quotaTemp+((($user1->getTempsTravail())/2)*$nbJour2));
                                                            } else {
                                                                        if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES) {
                                                                                $congesTemp=$user1->getConges();
                                                                                $user1->setConges($congesTemp+($nbJour2*1));
                                                                        }
                                                            }
                                                            $f = $testAbs->supprimerAbsence($utilisateur,$l[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
                                                            if ($f != 1) {
                                                                $codeErreur = 3;
                                                            }
                                                        }
                                            }
                                        }
                                        
                                        
                                        //determination des limites de travail en fonction du type de jour
                                        if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
                                                $limiteHeureTravail = $GLOBALS['limiteJourTravail'];
                                        } else {
                                            $limiteHeureTravail=$GLOBALS['limiteJourRecupPart'];
                                            //construction de l'absence 
                                            $absenceRecupPart=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
                                            $absenceRecupPart->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
                                            
                                            //traitement de l'enregistrement de la recuperation partielle
                                            if ($possibleAjout == true) {
                                                        $q = $absenceRecupPart->enregistrerNewAbsence();
                                                        //mise a jour des quotas
                                                        $val=$user1->getQuota();
                                                        $duree=$user1->getTempsTravail();
                                                        $user1->setQuota($val-(($user1->getTempsTravail())/2));
                                                        
                                                        if ($q != 1 ) {
                                                            //attribution d'un code erreur
                                                            $codeErreur=1;
                                                        }
                                            }
                                        }
                                        //test si le champ n'est pas vide et le champ est different de 0
                                        
                                        if (empty($_POST[$tabListeJour[$j].$nb])!=1 and ($_POST[$tabListeJour[$j].$nb])!=0)
                                        {
                                            
                                            //test si date <=date d'aujourd'hui
                                            if ($_POST["champ_date_j".$j]<=time() and ($possibleAjout==true))
                                            {
                                                //impossible de modifier des donnees une fosi que l'absence
                                                //est enregistree
                                                //construction de l'objet travail
                                                
                                                $travail= new Travail($utilisateur,$_POST["champ_tache".$nb]);
                                                $travail->setDateTravail(date('Y-m-d',$_POST["champ_date_j".$j]));
                                                $travail->setDureeTravail($_POST[$tabListeJour[$j].$nb]);
                                                
                                                //traitement de l'objet travail
                                                $t=traiterTravail($travail,$limiteHeureTravail);
                                                $_POST[$tabListeJour[$j].$nb]='';
                                                if($t!=1)$codeErreur=$t;
                                                
                                            }else{
                                                
                                                if($possibleAjout==true)
                                                {
                                                    //cas ou la date est superieure a la date d'aujourd'hui
                                                    //construction de l'objet prevision
                                                    $prevision=new Prevision(1000,1000);
                                                    $tableau=array(GEST_CHAMPS_ID_UTILISATEUR=>$utilisateur,
                                                    GEST_CHAMPS_ID_TACHE=>$_POST["champ_tache".$nb],
                                                    GEST_CHAMPS_DATE_PREVISION=>date('Y-m-d',$_POST["champ_date_j".$j]),
                                                    GEST_CHAMPS_DUREE_PREVISION=> $_POST["$tabListeJour[$j]".$nb]);
                                                    
                                                    $prevision->construirePrevision($tableau);
                                                    
                                                    $o=traiterPrevision($prevision, $limiteHeureTravail);
                                                    $_POST[$tabListeJour[$j].$nb]='';
                                                    if($o!=1)$codeErreur=$o;
                                                    
                                                }
                                            }
                                        }//fin traitement travail et prevision
                            }else{
                                //cas des conges
                                //cas : conges paye,recup,maladie,greve,ferie
                                if(($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_CONGES_PAYES)
                                or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_RECUPERATION)
                                or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_MALADIE)
                                or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_GREVE)
                                or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_WEEK_END)
                                or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_FERIE))
                                {
                                    //construction du nouvel objet absence
                                    $objetAbsence=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
                                    $objetAbsence->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
                                    //traitement de l'objet absence
                                    $g=traiterAbsence($objetAbsence,$user1,$_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]);
                                    if ($g[0]!=1){
                                        $codeErreur=$g[0];
                                    }else {
                                        $user1=$g[1];
                                        
                                    }
                                    
                                }
                            }//fin traitement type jour
                        }//typr jour
                        
                    }
                   // }
                }
                $h=$user1->mettreAJourUtilisateur();
                if ($h!=1) {
                        $codeErreur = 25;
                }
    }
    $_POST['champ_valider_travail'] = 'dejaValider';
}

/**
fonction qui traite les travaux
*enregistre si nouveau travail
*met a jour si existe deja
*@param : $travail : objet travail
*@param :limiteHeuretravail=la limite des heure sde travail
*/
function traiterTravail($travail,$limiteHeureTravail)
{
    //verification si on ne depasse pas 24 heures
    $sommeTravail= $travail->sommeHeureTravail($travail->getIdUserTravail(),$travail->getDateTravail());
    
    if (is_null($sommeTravail))
    {
        $sommeTravail=0;
    }
    
    //verification si donnees precedemment rentrees
    if (($travail->existeTravail()!=0)and ($travail->existeTravail()!=-1))
    {
        if (($sommeTravail + ($travail->getDureeTravail())-($travail->existeTravail()))<$limiteHeureTravail)
        {
            $q=$travail->mettreAjourTravail();
            
            if ($q!=1) {
                $res=4;
            }else $res=1;
        }
        
    }else
    //cas travail n'existe pas encore
    {
        if ($travail->existeTravail()==0)
        {
            //test si on de depasse pas 24 heures pour une journee
            if ($sommeTravail + ($travail->getDureeTravail())<$limiteHeureTravail)
            {
                $w=$travail->enregistrerNewTravail();
                if ($w!=1){
                    $res=5;
                }else $res=1;
            }
            
        }
    }
    return $res;
}

/**
*fonction qui traite les previsions
*@param $prevision: l'objet prevision
*@param : limite heure de travail
*@return 1 si aucun erreur
*@return 5 ou 6 si erreur
*/
function traiterPrevision($prevision, $limiteHeureTravail)
{
    //verification si on ne depasse pas 24 heures pour les donnees
    //rentrees a unedate donnee dans la base de donnees
    $sommePrev = $prevision->sommeHeurePrevision($prevision->getIdUserPrevision(),$prevision->getDatePrevision());
    //verification si une prevision a deja ete faite
    
    if (($prevision->existePrevision()!=0) and (($prevision->existePrevision()!=-1)))
    {
        if ($sommePrev+($prevision->getDureePrevision())-($prevision->existePrevision())<$limiteHeureTravail)
        {
            $q=$prevision->mettreAJourPrevision();
            if ($q!=1)
            {
                $res=5;
                echo "echec enregistrement prevision dans base de donnees <br />";
            }else $res=1;
        }
    }else{
        //cas ou aucuen prevsion n'a deja ete rentree
        if( $prevision->existePrevision()==0)
        {
            //test si la somme des previsions de depasse pas 24 heures
            if (($sommePrev+($prevision->getDureePrevision()))<<$limiteHeureTravail)
            {
                $w =$prevision->enregistrerNewPrevision();
                if ($w!=1) {
                    $res=6;
                    echo "erreur enregistrement prevision";
                }else $res=1;
            }
        }
    }
    return $res;
}
/**
*fonction qui traite les absences 
*@param : $abs : objet absence 
*@param : user: objet utilisateur
*@param $j : jour de la semaine : lundi =0
*supression d'eventuelle absences prealablement rentree
*supression et enregistrement effectif que si aucune lettre n'a prealablement ete 
*renvoie 1 si enregistrement effectuee
*met a jour la det de fin si l'absence fait partie d'une periode
*renvoie code erreur si erreur
*/
function traiterAbsence($abs,$user,$libelle)
{
    $tabAbs=$abs->existeAbsence();
    $ok=true;//booleen indiquant si traitement a faire ou non
    $possible=true;//booleen indiquant que l'absence est possible
    
    //test si weekend =>on n'insere aucun enregistrement
    if($libelle==GTT_NOM_WEEK_END)
    {
        $ok=false;
    }
    //si chevauchement existe
    
    if(count($tabAbs)>0)
    {
        //on sait que $tabAbs contient au plus un enregistrement
        //car la periode ne tient que sur une journee
        $line=$tabAbs[0];
        //si pas meme identifiant 
        if($line[GEST_CHAMPS_ID_MOTIF]!=$abs->getIdMotif())
        {
            if($line[GEST_CHAMPS_DATE_ENVOI_LETTRE]!='0000-00-00')
            {
                //si le jour d'absence a ete valide
                $ok=false;
            }else{
                //si absence non encore validee
                //verifiaction pour un jour de conges payes ou recuperation
                if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
                {
                    
                    //recuperation de la duree de l'absence qui chevauche le jour demande
                    $debut=explode('-',$line[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
                    $fin=explode('-',$line[GEST_CHAMPS_DATE_FIN_ABSENCE]);
                    $dateDeb=mktime(0,0,0,$debut[1],$debut[2],$debut[0]);
                    $dateFin=mktime(0,0,0,$fin[1],$fin[2],$fin[0]);
                    
                    //verification si absence precedente est un conges payes
                    if($_POST["champ_libelle_type_jour".$line[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
                    {
                        $duree=intval((($dateFin-$dateDeb)/3600)/24);
                    }else $duree=0;
                    
                    
                    //verification si possible de prendre le conge paye
                    if($libelle==GTT_NOM_CONGES_PAYES)
                    {
                        if (((($user->getConges())+($duree)-($abs->getDureeAbsence()))<0))
                        {
                           $possible=false;
                        }
                    }else 
                    {
                        //mise a jour de la quantite d'heure supp
                        $heureSup=$user->getQuota();
                        $user->setQuota($heureSup-($user->getTempsTravail()));
                        
                    }
                }//fin test conges payes
                
                
                
                //supression des anciennes absence dans le cas d'une nouvelle absence
                if($possible==true)
                {
                    for ($p=0;$p<count($tabAbs);$p++)
                    {
                        $line1=$tabAbs[$p];
                        //duree de l'absence a supprimer
                        $abs2=$abs;
                        $abs2->construireAbsence($line1);
                        
                        $nbJour=$abs2->getDureeAbsence();
                                                 
                        //mise a jour des quota heures sup et des conges payes de l'utilisateur
                        if($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION)
                        {
                            $quotaTemp=$user->getQuota();
                            $user->setQuota($quotaTemp+(($user->getTempsTravail())*$nbJour));
                            
                        }elseif($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART)
                        {
                            $quotaTemp=$user->getQuota();
                            $user->setQuota($quotaTemp+($nbJour*(($user->getTempsTravail())/2)));
                            
                        }else
                        {
                            if ($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
                            {
                                $congesTemp=$user->getConges();
                                $user->setConges($congesTemp+(1*$nbJour));
                                
                            }
                        }
                        $z=$abs->supprimerAbsence($abs->getIdUserAbsence(),$line1[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
                        if($z!=1)
                        {
                            $res=7;
                        }else $res=1;
                    }
                }
                
            }
        }else
        {
            //si meme motif on ne fait rien
            $ok=false;
        }
        
    }else{
        //si pas de chevauchement
        $supprimTravail=true;
        
        //supression d'eventuelles travaux
        if ($supprimTravail==true)
        {
            $res=&Travail::supprimerTachesUserDate($abs->getIdUserAbsence(),$abs->getDateDebAbsence());
            if($res!=1)
            {
                $res=8;
            }
        }
        
        //mise a jour des conge spayes et heures sup
        
        if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
        {
            
             //verification si possible de prendre le conge paye
            if($libelle==GTT_NOM_CONGES_PAYES)
            {
                if ((($user->getConges())-($abs->getDureeAbsence()))>=0)
                {
                    $temp=$user->getConges();
                    //mise a jour des conges payes
                    $user->setConges($temp-($abs->getDureeAbsence()));
                    
                }else $ok=false;
            }else 
            {
                //mise a jour de la quantite d'heure supp
                $heureSup=$user->getQuota();
                $user->setQuota($heureSup-($user->getTempsTravail()));
                
            }
        }//fin test conges payes
    }
    //enregistrement de la nouvelle absence
    //si traitement a faire
    if($ok==true and $possible==true)
    {
        $nouveau=true; //booleen indiquant s'il faut enregistrer une nouvelle absence
        $absencePrec=$abs->getAbsencesPrec();
        $absenceSuiv=$abs->getAbsencesSuiv();
        //timestamp de la date de debut d'absence
        $dDeb=explode('-',$abs->getDateDebAbsence());
        $timeDeb=mktime(0,0,0,$dDeb[1],$dDeb[2],$dDeb[0]);
        
        //timestamp de la date de fin d'absence
        $dFin=explode('-',$abs->getDateFinAbsence());
        $timeFin=mktime(0,0,0, $dFin[1], $dFin[2], $dFin[0]);
        
        //creation des timestamp des absences precedentes et suivantes
        if($absencePrec!=-1)
        {
            $finPrec=explode('-',$absencePrec->getDateFinAbsence());
            $datePrec=mktime(0,0,0,$finPrec[1],$finPrec[2],$finPrec[0]);
        }
        //timestamp de l'absence suivant
        if($absenceSuiv!=-1)
        {
            $debSuiv=explode('-',$absenceSuiv->getDateDebAbsence());
            $dateSuiv=mktime(0,0,0,$debSuiv[1],$debSuiv[2],$debSuiv[0]);
        }
        //verification s'il existe des absences precedentes
        //non encore validees
        //si pas d'absence precedentes
        if($absencePrec==-1)
        {
            if ($absenceSuiv!=-1)
            {
                //si absence suivante est contigue
                if(isDateContigues($timeFin,$dateSuiv)==1)
                {
                    $absTemp=$absenceSuiv;
                   
                    $absTemp->setDateDeb($abs->getDateDebAbsence());
                   
                    $w=$absTemp->supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
                    $resTemp=$absTemp->enregistrerNewAbsence();
                    $nouveau=false;
                    if ($resTemp!=1 or $w!=1)
                    {
                        $res=9;
                    }
                }
            }
        }else//s'il existe une absence precedentes
        {
            //si absence precedente contigue
            if(isDateContigues($datePrec,$timeDeb)==1)
            {
                $absTemp=$absencePrec;
                $absTemp->setDateFin($abs->getDateFinAbsence());
                $nouveau=false;
                //test si  l'absence suivante est vide 
                if($absenceSuiv==-1)
                {
                  
                    $resTemp=$absTemp->mettreAJourAbsence();
                    
                    if($resTemp!=1)
                    {
                        $res=10;
                    }
                }else//si absence suivante existe
                {
                    //test si absence suivante contigue
                    if(isDateContigues($timeFin,$dateSuiv)==1)
                    {
                        $absTemp->setDateFin($absenceSuiv->getDateFinAbsence());
                        //supression de l'absence suivante
                        $res=&Absence::supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
                        if($res!=1)
                        {
                            $res=11;
                        }
                        //mise a jour de l'absence
                         
                        $resTemp=$absTemp->enregistrerNewAbsence();
                        
                        if($resTemp!=1)
                        {
                            $res=12;
                        }
                        
                    }else
                    {
                        //absence suivante non contigue
                        //mise a jour de l'absence
                        $resTemp=$absTemp->mettreAJourAbsence();
                        
                        if($resTemp!=1)
                        {
                            $res=13;
                        }
                    }
                }
                
                
            }else
            {
                //si l'absence precedente n'est pas contigue 
                if($absenceSuiv!=-1)//verification si absence suivante non vide
                {
                    if(isDateContigues($timeFin,$dateSuiv)==1)
                    {
                        //si contigue
                        $absTemp=$absenceSuiv;
                        $absTemp->setDateDeb($abs->getDateDebAbsence());
                        //enregistrement de l'absence
                        $w=$absTemp->supprimerAbsence($absTemp->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
                        $resTemp=$absTemp->enregistrerNewAbsence();
                        if($resTemp!=1 or $w!=1)
                        {
                            $res=14;
                        }
                        $nouveau=false;
                    }
                }
                
            }
        }
        if($nouveau==true)
        {
            $res=$abs->enregistrerNewAbsence();
            if($res!=1)
            {
                $res=15;
            } 
        }
        
        
        return array($res,$user);
    }
}
/**
*fonction qui verifie si deu dates sont contigues
*@param $dateVerif : timestamp unix
*@param $date : timestamp unix
*/
function isDateContigues($dateVerif,$date)
{
    if ($dateVerif<$date)
    {
        $dateDeb=$date;
        $dateFin=$dateVerif;
    }else{
        $dateDeb=$dateVerif;
        $dateFin=$date;
    }
    $r=-1;
    
   
    //verification si la date de debut est en semaine
    //ou lundi
    $jour=date('w',$dateDeb);
    //si c un lundi
    if ($jour==1)
    {
        if(($dateDeb-(3600*24*3))==$dateFin)
        {
            $r=1;
        }
    }else//si c un jour de semaine
    {
        if(($dateDeb-(3600*24))==$dateFin)
        {
            $r=1;
        }
    }
    return $r;
    
}

/**
*fonction traitant le menu travail
*/
function traiterAdminTravail($url, $semaine, $annee, $utilisateur)
{
        $text = creerEntetePage(GESTION_GESTIONDEPOSTE_L);
        $form = afficherTableauJour($url, $utilisateur, $semaine, $annee);
        
        if (isset($_POST['champ_valider_travail']) and $_POST['champ_valider_travail'] != 'dejaValider' and $form->validate()) {    
                $form->process(traiterSemaine($utilisateur));
                $t = afficherTableauJour($url, $utilisateur, $semaine, $annee);
                $text .= $t->ToHTml();
        } else {
                $text .= $form->ToHtml();
        }
        return $text;
}

?>