Subversion Repositories Applications.gtt

Rev

Rev 5 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5 Rev 9
1
<?php
1
<?php
2
 
2
 
3
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
21
// +------------------------------------------------------------------------------------------------------+
22
// |@author ABDOOL RAHEEM shaheen   shaheenar50@hotmail.com                                                 |
22
// |@author ABDOOL RAHEEM shaheen   shaheenar50@hotmail.com                                                 |
23
// |@version 3                                                                                            |
23
// |@version 3                                                                                            |
24
 
24
 
25
// +------------------------------------------------------------------------------------------------------+
25
// +------------------------------------------------------------------------------------------------------+
26
/*
26
/*
27
*fichier contenant le menu principal de l'application de gestion du temps de travail 
27
*fichier contenant le menu principal de l'application de gestion du temps de travail 
28
*@package gtt_general
28
*@package gtt_general
29
//Auteur original :
29
//Auteur original :
30
*@author        Dorian Bannier <dbannier@aol.com>
30
*@author        Dorian Bannier <dbannier@aol.com>
31
//Autres auteurs :
31
//Autres auteurs :
32
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
32
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
33
*@copyright     Copyright (C) 2003 Tela-Botanica
33
*@copyright     Copyright (C) 2003 Tela-Botanica
34
*/
34
*/
35
// +------------------------------------------------------------------------------------------------------+
35
// +------------------------------------------------------------------------------------------------------+
36
include_once CHEMIN_FN_GENERIQUE_AFFICHAGE;
-
 
37
include_once CHEMIN_MENU.'gtt_menu_travail.php';
36
include_once CHEMIN_MENU.'gtt_menu_travail.php';
38
include_once CHEMIN_CLASSES_METIER.'gtt_travail.class.php';
37
include_once CHEMIN_CLASSES_METIER.'gtt_travail.class.php';
39
include_once CHEMIN_CLASSES_METIER.'gtt_taches.class.php';
38
include_once CHEMIN_CLASSES_METIER.'gtt_taches.class.php';
40
include_once CHEMIN_CLASSES_METIER.'gtt_prevision_tache.class.php';
39
include_once CHEMIN_CLASSES_METIER.'gtt_prevision_tache.class.php';
41
/**
40
/**
42
*fonction verifiant si les heures rentrees sont bien valides
41
*fonction verifiant si les heures rentrees sont bien valides
43
*verification si heure rentree dans une case <24 ou >0
42
*verification si heure rentree dans une case <24 ou >0
44
*verifiaction si somme heure d'une journee<24
43
*verifiaction si somme heure d'une journee<24
45
*/
44
*/
46
 
45
 
47
 
46
 
48
function verifTempsTravail()
47
function verifTempsTravail()
49
{
48
{
50
	$nb = $_POST['champ_nb_projet'];
49
	$nb = $_POST['champ_nb_projet'];
51
	$res  = true;
50
	$res  = true;
52
	// Iniatilisation des variables
51
	// Iniatilisation des variables
53
	$somme1 = $somme2 = $somme3 = $somme4 = $somme5 = $somme6 = $somme7 = 0;
52
	$somme1 = $somme2 = $somme3 = $somme4 = $somme5 = $somme6 = $somme7 = 0;
54
    $verif_a_faire = false;
53
    $verif_a_faire = false;
55
    // Tableau jour
54
    // Tableau jour
56
    $tabJour = array(0 => "champ_lundi", 1 => "champ_mardi", "champ_mercredi", "champ_jeudi", "champ_vendredi", "champ_samedi", "champ_dimanche");
55
    $tabJour = array(0 => "champ_lundi", 1 => "champ_mardi", "champ_mercredi", "champ_jeudi", "champ_vendredi", "champ_samedi", "champ_dimanche");
57
    
56
    
58
    for ($i = 0; $i < $nb; $i++) {   
57
    for ($i = 0; $i < $nb; $i++) {   
59
		for ($j = 0; $j < count($tabJour); $j++) {
58
		for ($j = 0; $j < count($tabJour); $j++) {
60
		    // On ne fait les tests que si des jours de travail ou de recuperation partielle
59
		    // On ne fait les tests que si des jours de travail ou de recuperation partielle
61
		    if ((isset($_POST[$tabJour[$j].$i]))and (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) or
60
		    if ((isset($_POST[$tabJour[$j].$i]))and (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) or
62
		    ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j"))) {
61
		    ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j"))) {
63
				$verif_a_faire = true;
62
				$verif_a_faire = true;
64
				//attribution de la limite selon le type de jour
63
				//attribution de la limite selon le type de jour
65
				if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
64
				if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
66
					$limite = 24;
65
					$limite = 24;
67
				} elseif ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j") {
66
				} elseif ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]=="Récup part:1/2j") {
68
					$limite = 12;
67
					$limite = 12;
69
				}
68
				}
70
				
69
				
71
				if ((!(($_POST[$tabJour[$j].$i]<$limite)and ($_POST[$tabJour[$j].$i]>=0))) or
70
				if ((!(($_POST[$tabJour[$j].$i]<$limite)and ($_POST[$tabJour[$j].$i]>=0))) or
72
				(empty($_POST[$tabJour[$j].$i])!=1 and is_numeric($_POST[$tabJour[$j].$i]) != 1)) {
71
				(empty($_POST[$tabJour[$j].$i])!=1 and is_numeric($_POST[$tabJour[$j].$i]) != 1)) {
73
				    $res = false;
72
				    $res = false;
74
				} else {
73
				} else {
75
				    switch ($j) {
74
				    switch ($j) {
76
					//cas lundi
75
					//cas lundi
77
					case 1:
76
					case 1:
78
					$somme1 += $_POST[$tabJour[$j].$i];
77
					$somme1 += $_POST[$tabJour[$j].$i];
79
					break;
78
					break;
80
					//cas  mardi
79
					//cas  mardi
81
					case 2 : 
80
					case 2 : 
82
					
81
					
83
					$somme2 += $_POST[$tabJour[$j].$i];
82
					$somme2 += $_POST[$tabJour[$j].$i];
84
					break;
83
					break;
85
					
84
					
86
					//cas mercredi
85
					//cas mercredi
87
					case 3 :
86
					case 3 :
88
					$somme3 += $_POST[$tabJour[$j].$i];
87
					$somme3 += $_POST[$tabJour[$j].$i];
89
					break;
88
					break;
90
					
89
					
91
					//cas jeudi
90
					//cas jeudi
92
					case 4 :
91
					case 4 :
93
					$somme4 += $_POST[$tabJour[$j].$i];
92
					$somme4 += $_POST[$tabJour[$j].$i];
94
					break;
93
					break;
95
					//cas vendredi
94
					//cas vendredi
96
					case 5 :
95
					case 5 :
97
					$somme5 += $_POST[$tabJour[$j].$i];
96
					$somme5 += $_POST[$tabJour[$j].$i];
98
					break;
97
					break;
99
					
98
					
100
					//cas samedi
99
					//cas samedi
101
					case 6 :
100
					case 6 :
102
					$somme6 += $_POST[$tabJour[$j].$i];
101
					$somme6 += $_POST[$tabJour[$j].$i];
103
					break;
102
					break;
104
					//cas dimanche
103
					//cas dimanche
105
					
104
					
106
					case 7 :
105
					case 7 :
107
					$somme7 += $_POST[$tabJour[$j].$i];
106
					$somme7 += $_POST[$tabJour[$j].$i];
108
					break;
107
					break;
109
				    } 
108
				    } 
110
				}
109
				}
111
		    }
110
		    }
112
		}
111
		}
113
    }
112
    }
114
    
113
    
115
    //test si une des valeurs >24
114
    //test si une des valeurs >24
116
    if(  $verif_a_faire == true) {
115
    if(  $verif_a_faire == true) {
117
    	$resultat=(($somme1<$limite)and ($somme2<$limite)and ($somme3<$limite)and ($somme4<$limite)and ($somme5<$limite)
116
    	$resultat=(($somme1<$limite)and ($somme2<$limite)and ($somme3<$limite)and ($somme4<$limite)and ($somme5<$limite)
118
    	and ($somme6<$limite)and ($somme7<$limite)and ($res==true));
117
    	and ($somme6<$limite)and ($somme7<$limite)and ($res==true));
119
    } else {
118
    } else {
120
    	$resultat = true;
119
    	$resultat = true;
121
    }
120
    }
122
	
121
	
123
	return $resultat;
122
	return $resultat;
124
}
123
}
125
 
124
 
126
/**
125
/**
127
*fonction traitant l'ajout d'un champ travail dans la base
126
*fonction traitant l'ajout d'un champ travail dans la base
128
*@param : utilisateur
127
*@param : utilisateur
129
*/
128
*/
130
function traiterSemaine($utilisateur)
129
function traiterSemaine($utilisateur)
131
{
130
{
132
	if (isset($_POST['champ_valider_travail']))	{
131
	if (isset($_POST['champ_valider_travail']))	{
133
		// Récuperation de l'utilisateur
132
		// Récuperation de l'utilisateur
134
		$user1 = Utilisateur::recupererUtilisateur($utilisateur);
133
		$user1 = Utilisateur::recupererUtilisateur($utilisateur);
135
		// Parcours du tableau de jours
134
		// Parcours du tableau de jours
136
		$tabListeJour = array(0 =>'champ_lundi',1 =>'champ_mardi','champ_mercredi','champ_jeudi','champ_vendredi','champ_samedi','champ_dimanche');
135
		$tabListeJour = array(0 =>'champ_lundi',1 =>'champ_mardi','champ_mercredi','champ_jeudi','champ_vendredi','champ_samedi','champ_dimanche');
137
		// Parcourt du tableau de jour 
136
		// Parcourt du tableau de jour 
138
		for ($nb = 0; $nb < $_POST["champ_nb_projet"]; $nb++) {
137
		for ($nb = 0; $nb < $_POST["champ_nb_projet"]; $nb++) {
139
		    for($j = 0; $j < count($tabListeJour); $j++) {
138
		    for($j = 0; $j < count($tabListeJour); $j++) {
140
			// Test du type de jour
139
			// Test du type de jour
141
			if (isset($_POST["champ_type_jour".$j])) {   
140
			if (isset($_POST["champ_type_jour".$j])) {   
142
			    //cas  jour de travail ou recuperation partielle(recuperation partielle ne reduit pas le temps de travail
141
			    //cas  jour de travail ou recuperation partielle(recuperation partielle ne reduit pas le temps de travail
143
			    if (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_TRAVAIL)
142
			    if (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_TRAVAIL)
144
			    	or (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_RECUP_PART)
143
			    	or (($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]] == GTT_NOM_RECUP_PART)
145
			    	and ($_POST["champ_rtt_type_jour".$_POST["champ_type_jour".$j]] == 0))) {
144
			    	and ($_POST["champ_rtt_type_jour".$_POST["champ_type_jour".$j]] == 0))) {
146
				
145
				
147
					//test si aucun conges prealablement rentre ne chevauche la date voulue
146
					//test si aucun conges prealablement rentre ne chevauche la date voulue
148
					//construction d'un objet absence equivalent a la date de travail
147
					//construction d'un objet absence equivalent a la date de travail
149
					$testAbs = new Absence($utilisateur,0,date('Y-m-d', $_POST["champ_date_j".$j]));
148
					$testAbs = new Absence($utilisateur,0,date('Y-m-d', $_POST["champ_date_j".$j]));
150
					$testAbs->setDateFin(date('Y-m-d', $_POST["champ_date_j".$j]));
149
					$testAbs->setDateFin(date('Y-m-d', $_POST["champ_date_j".$j]));
151
					$tabAbsence = $testAbs->existeAbsence();
150
					$tabAbsence = $testAbs->existeAbsence();
152
					// Booleen pour indiquer si on peut ajouter
151
					// Booleen pour indiquer si on peut ajouter
153
					$possibleAjout = true;
152
					$possibleAjout = true;
154
					// Si chevauchement: verification si tous validee
153
					// Si chevauchement: verification si tous validee
155
					if (count($tabAbsence) > 0) {
154
					if (count($tabAbsence) > 0) {
156
					    if ($testAbs->existeAbsenceValidee() == true) {
155
					    if ($testAbs->existeAbsenceValidee() == true) {
157
							$possibleAjout = false;
156
							$possibleAjout = false;
158
							$_POST[$tabListeJour[$j].$nb] = '';
157
							$_POST[$tabListeJour[$j].$nb] = '';
159
							$codeErreur = 2;
158
							$codeErreur = 2;
160
					    } else {
159
					    } else {
161
							//supression des absences non validees
160
							//supression des absences non validees
162
							for ($p = 0; $p < count($tabAbsence); $p++) {
161
							for ($p = 0; $p < count($tabAbsence); $p++) {
163
							    $l = $tabAbsence[$p];
162
							    $l = $tabAbsence[$p];
164
							    $absTemp2 = $testAbs;
163
							    $absTemp2 = $testAbs;
165
							    $absTemp2->construireAbsence($l);
164
							    $absTemp2->construireAbsence($l);
166
							    $nbJour2 = $absTemp2->getDureeAbsence();
165
							    $nbJour2 = $absTemp2->getDureeAbsence();
167
							    // Mise a jour des quota heures sup et des conges payes de l'utilisateur
166
							    // Mise a jour des quota heures sup et des conges payes de l'utilisateur
168
							    if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION) {
167
							    if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION) {
169
									$quotaTemp=$user1->getQuota();
168
									$quotaTemp=$user1->getQuota();
170
									$user1->setQuota($quotaTemp+(($user1->getTempsTravail())*$nbJour2));
169
									$user1->setQuota($quotaTemp+(($user1->getTempsTravail())*$nbJour2));
171
							    } elseif ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART) {
170
							    } elseif ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART) {
172
									$quotaTemp=$user1->getQuota();
171
									$quotaTemp=$user1->getQuota();
173
									$user1->setQuota($quotaTemp+((($user1->getTempsTravail())/2)*$nbJour2));
172
									$user1->setQuota($quotaTemp+((($user1->getTempsTravail())/2)*$nbJour2));
174
							    } else {
173
							    } else {
175
									if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES) {
174
									if ($_POST["champ_libelle_type_jour".$l[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES) {
176
										$congesTemp=$user1->getConges();
175
										$congesTemp=$user1->getConges();
177
										$user1->setConges($congesTemp+($nbJour2*1));
176
										$user1->setConges($congesTemp+($nbJour2*1));
178
									}
177
									}
179
							    }
178
							    }
180
							    $f = $testAbs->supprimerAbsence($utilisateur,$l[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
179
							    $f = $testAbs->supprimerAbsence($utilisateur,$l[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
181
							    if ($f != 1) {
180
							    if ($f != 1) {
182
							    	$codeErreur = 3;
181
							    	$codeErreur = 3;
183
							    }
182
							    }
184
							}
183
							}
185
					    }
184
					    }
186
					}
185
					}
187
					
186
					
188
					
187
					
189
					//determination des limites de travail en fonction du type de jour
188
					//determination des limites de travail en fonction du type de jour
190
					if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
189
					if ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_TRAVAIL) {
191
						$limiteHeureTravail = $GLOBALS['limiteJourTravail'];
190
						$limiteHeureTravail = $GLOBALS['limiteJourTravail'];
192
					} else {
191
					} else {
193
					    $limiteHeureTravail=$GLOBALS['limiteJourRecupPart'];
192
					    $limiteHeureTravail=$GLOBALS['limiteJourRecupPart'];
194
					    //construction de l'absence 
193
					    //construction de l'absence 
195
					    $absenceRecupPart=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
194
					    $absenceRecupPart=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
196
					    $absenceRecupPart->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
195
					    $absenceRecupPart->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
197
					    
196
					    
198
					    //traitement de l'enregistrement de la recuperation partielle
197
					    //traitement de l'enregistrement de la recuperation partielle
199
					    if ($possibleAjout == true) {
198
					    if ($possibleAjout == true) {
200
							$q = $absenceRecupPart->enregistrerNewAbsence();
199
							$q = $absenceRecupPart->enregistrerNewAbsence();
201
							//mise a jour des quotas
200
							//mise a jour des quotas
202
							$val=$user1->getQuota();
201
							$val=$user1->getQuota();
203
							$duree=$user1->getTempsTravail();
202
							$duree=$user1->getTempsTravail();
204
							$user1->setQuota($val-(($user1->getTempsTravail())/2));
203
							$user1->setQuota($val-(($user1->getTempsTravail())/2));
205
							
204
							
206
							if ($q != 1 ) {
205
							if ($q != 1 ) {
207
							    //attribution d'un code erreur
206
							    //attribution d'un code erreur
208
							    $codeErreur=1;
207
							    $codeErreur=1;
209
							}
208
							}
210
					    }
209
					    }
211
					}
210
					}
212
					//test si le champ n'est pas vide et le champ est different de 0
211
					//test si le champ n'est pas vide et le champ est different de 0
213
					
212
					
214
					if (empty($_POST[$tabListeJour[$j].$nb])!=1 and ($_POST[$tabListeJour[$j].$nb])!=0)
213
					if (empty($_POST[$tabListeJour[$j].$nb])!=1 and ($_POST[$tabListeJour[$j].$nb])!=0)
215
					{
214
					{
216
					    
215
					    
217
					    //test si date <=date d'aujourd'hui
216
					    //test si date <=date d'aujourd'hui
218
					    if ($_POST["champ_date_j".$j]<=time() and ($possibleAjout==true))
217
					    if ($_POST["champ_date_j".$j]<=time() and ($possibleAjout==true))
219
					    {
218
					    {
220
						//impossible de modifier des donnees une fosi que l'absence
219
						//impossible de modifier des donnees une fosi que l'absence
221
						//est enregistree
220
						//est enregistree
222
						//construction de l'objet travail
221
						//construction de l'objet travail
223
						
222
						
224
						$travail= new Travail($utilisateur,$_POST["champ_tache".$nb]);
223
						$travail= new Travail($utilisateur,$_POST["champ_tache".$nb]);
225
						$travail->setDateTravail(date('Y-m-d',$_POST["champ_date_j".$j]));
224
						$travail->setDateTravail(date('Y-m-d',$_POST["champ_date_j".$j]));
226
						$travail->setDureeTravail($_POST[$tabListeJour[$j].$nb]);
225
						$travail->setDureeTravail($_POST[$tabListeJour[$j].$nb]);
227
						
226
						
228
						//traitement de l'objet travail
227
						//traitement de l'objet travail
229
						$t=traiterTravail($travail,$limiteHeureTravail);
228
						$t=traiterTravail($travail,$limiteHeureTravail);
230
						$_POST[$tabListeJour[$j].$nb]='';
229
						$_POST[$tabListeJour[$j].$nb]='';
231
						if($t!=1)$codeErreur=$t;
230
						if($t!=1)$codeErreur=$t;
232
						
231
						
233
					    }else{
232
					    }else{
234
						
233
						
235
						if($possibleAjout==true)
234
						if($possibleAjout==true)
236
						{
235
						{
237
						    //cas ou la date est superieure a la date d'aujourd'hui
236
						    //cas ou la date est superieure a la date d'aujourd'hui
238
						    //construction de l'objet prevision
237
						    //construction de l'objet prevision
239
						    $prevision=new Prevision(1000,1000);
238
						    $prevision=new Prevision(1000,1000);
240
						    $tableau=array(GEST_CHAMPS_ID_UTILISATEUR=>$utilisateur,
239
						    $tableau=array(GEST_CHAMPS_ID_UTILISATEUR=>$utilisateur,
241
						    GEST_CHAMPS_ID_TACHE=>$_POST["champ_tache".$nb],
240
						    GEST_CHAMPS_ID_TACHE=>$_POST["champ_tache".$nb],
242
						    GEST_CHAMPS_DATE_PREVISION=>date('Y-m-d',$_POST["champ_date_j".$j]),
241
						    GEST_CHAMPS_DATE_PREVISION=>date('Y-m-d',$_POST["champ_date_j".$j]),
243
						    GEST_CHAMPS_DUREE_PREVISION=> $_POST["$tabListeJour[$j]".$nb]);
242
						    GEST_CHAMPS_DUREE_PREVISION=> $_POST["$tabListeJour[$j]".$nb]);
244
						    
243
						    
245
						    $prevision->construirePrevision($tableau);
244
						    $prevision->construirePrevision($tableau);
246
						    
245
						    
247
						    $o=traiterPrevision($prevision, $limiteHeureTravail);
246
						    $o=traiterPrevision($prevision, $limiteHeureTravail);
248
						    $_POST[$tabListeJour[$j].$nb]='';
247
						    $_POST[$tabListeJour[$j].$nb]='';
249
						    if($o!=1)$codeErreur=$o;
248
						    if($o!=1)$codeErreur=$o;
250
						    
249
						    
251
						}
250
						}
252
					    }
251
					    }
253
					}//fin traitement travail et prevision
252
					}//fin traitement travail et prevision
254
			    }else{
253
			    }else{
255
				//cas des conges
254
				//cas des conges
256
				//cas : conges paye,recup,maladie,greve,ferie
255
				//cas : conges paye,recup,maladie,greve,ferie
257
				if(($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_CONGES_PAYES)
256
				if(($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_CONGES_PAYES)
258
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_RECUPERATION)
257
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_RECUPERATION)
259
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_MALADIE)
258
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_MALADIE)
260
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_GREVE)
259
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_GREVE)
261
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_WEEK_END)
260
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_WEEK_END)
262
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_FERIE))
261
				or ($_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]==GTT_NOM_FERIE))
263
				{
262
				{
264
				    //construction du nouvel objet absence
263
				    //construction du nouvel objet absence
265
				    $objetAbsence=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
264
				    $objetAbsence=new Absence($utilisateur,$_POST["champ_type_jour".$j],date('Y-m-d',$_POST["champ_date_j".$j]));
266
				    $objetAbsence->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
265
				    $objetAbsence->setDateFin(date('Y-m-d',$_POST["champ_date_j".$j]));
267
				    //traitement de l'objet absence
266
				    //traitement de l'objet absence
268
				    $g=traiterAbsence($objetAbsence,$user1,$_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]);
267
				    $g=traiterAbsence($objetAbsence,$user1,$_POST["champ_libelle_type_jour".$_POST["champ_type_jour".$j]]);
269
				    if ($g[0]!=1){
268
				    if ($g[0]!=1){
270
					$codeErreur=$g[0];
269
					$codeErreur=$g[0];
271
				    }else {
270
				    }else {
272
					$user1=$g[1];
271
					$user1=$g[1];
273
					
272
					
274
				    }
273
				    }
275
				    
274
				    
276
				}
275
				}
277
			    }//fin traitement type jour
276
			    }//fin traitement type jour
278
			}//typr jour
277
			}//typr jour
279
			
278
			
280
		    }
279
		    }
281
		   // }
280
		   // }
282
		}
281
		}
283
		$h=$user1->mettreAJourUtilisateur();
282
		$h=$user1->mettreAJourUtilisateur();
284
		if ($h!=1) {
283
		if ($h!=1) {
285
			$codeErreur = 25;
284
			$codeErreur = 25;
286
		}
285
		}
287
    }
286
    }
288
    $_POST['champ_valider_travail'] = 'dejaValider';
287
    $_POST['champ_valider_travail'] = 'dejaValider';
289
}
288
}
290
 
289
 
291
/**
290
/**
292
fonction qui traite les travaux
291
fonction qui traite les travaux
293
*enregistre si nouveau travail
292
*enregistre si nouveau travail
294
*met a jour si existe deja
293
*met a jour si existe deja
295
*@param : $travail : objet travail
294
*@param : $travail : objet travail
296
*@param :limiteHeuretravail=la limite des heure sde travail
295
*@param :limiteHeuretravail=la limite des heure sde travail
297
*/
296
*/
298
function traiterTravail($travail,$limiteHeureTravail)
297
function traiterTravail($travail,$limiteHeureTravail)
299
{
298
{
300
    //verification si on ne depasse pas 24 heures
299
    //verification si on ne depasse pas 24 heures
301
    $sommeTravail= $travail->sommeHeureTravail($travail->getIdUserTravail(),$travail->getDateTravail());
300
    $sommeTravail= $travail->sommeHeureTravail($travail->getIdUserTravail(),$travail->getDateTravail());
302
    
301
    
303
    if (is_null($sommeTravail))
302
    if (is_null($sommeTravail))
304
    {
303
    {
305
	$sommeTravail=0;
304
	$sommeTravail=0;
306
    }
305
    }
307
    
306
    
308
    //verification si donnees precedemment rentrees
307
    //verification si donnees precedemment rentrees
309
    if (($travail->existeTravail()!=0)and ($travail->existeTravail()!=-1))
308
    if (($travail->existeTravail()!=0)and ($travail->existeTravail()!=-1))
310
    {
309
    {
311
	if (($sommeTravail + ($travail->getDureeTravail())-($travail->existeTravail()))<$limiteHeureTravail)
310
	if (($sommeTravail + ($travail->getDureeTravail())-($travail->existeTravail()))<$limiteHeureTravail)
312
	{
311
	{
313
	    $q=$travail->mettreAjourTravail();
312
	    $q=$travail->mettreAjourTravail();
314
	    
313
	    
315
	    if ($q!=1) {
314
	    if ($q!=1) {
316
		$res=4;
315
		$res=4;
317
	    }else $res=1;
316
	    }else $res=1;
318
	}
317
	}
319
	
318
	
320
    }else
319
    }else
321
    //cas travail n'existe pas encore
320
    //cas travail n'existe pas encore
322
    {
321
    {
323
	if ($travail->existeTravail()==0)
322
	if ($travail->existeTravail()==0)
324
	{
323
	{
325
	    //test si on de depasse pas 24 heures pour une journee
324
	    //test si on de depasse pas 24 heures pour une journee
326
	    if ($sommeTravail + ($travail->getDureeTravail())<$limiteHeureTravail)
325
	    if ($sommeTravail + ($travail->getDureeTravail())<$limiteHeureTravail)
327
	    {
326
	    {
328
		$w=$travail->enregistrerNewTravail();
327
		$w=$travail->enregistrerNewTravail();
329
		if ($w!=1){
328
		if ($w!=1){
330
		    $res=5;
329
		    $res=5;
331
		}else $res=1;
330
		}else $res=1;
332
	    }
331
	    }
333
	    
332
	    
334
	}
333
	}
335
    }
334
    }
336
    return $res;
335
    return $res;
337
}
336
}
338
 
337
 
339
/**
338
/**
340
*fonction qui traite les previsions
339
*fonction qui traite les previsions
341
*@param $prevision: l'objet prevision
340
*@param $prevision: l'objet prevision
342
*@param : limite heure de travail
341
*@param : limite heure de travail
343
*@return 1 si aucun erreur
342
*@return 1 si aucun erreur
344
*@return 5 ou 6 si erreur
343
*@return 5 ou 6 si erreur
345
*/
344
*/
346
function traiterPrevision($prevision, $limiteHeureTravail)
345
function traiterPrevision($prevision, $limiteHeureTravail)
347
{
346
{
348
    //verification si on ne depasse pas 24 heures pour les donnees
347
    //verification si on ne depasse pas 24 heures pour les donnees
349
    //rentrees a unedate donnee dans la base de donnees
348
    //rentrees a unedate donnee dans la base de donnees
350
    $sommePrev = $prevision->sommeHeurePrevision($prevision->getIdUserPrevision(),$prevision->getDatePrevision());
349
    $sommePrev = $prevision->sommeHeurePrevision($prevision->getIdUserPrevision(),$prevision->getDatePrevision());
351
    //verification si une prevision a deja ete faite
350
    //verification si une prevision a deja ete faite
352
    
351
    
353
    if (($prevision->existePrevision()!=0) and (($prevision->existePrevision()!=-1)))
352
    if (($prevision->existePrevision()!=0) and (($prevision->existePrevision()!=-1)))
354
    {
353
    {
355
	if ($sommePrev+($prevision->getDureePrevision())-($prevision->existePrevision())<$limiteHeureTravail)
354
	if ($sommePrev+($prevision->getDureePrevision())-($prevision->existePrevision())<$limiteHeureTravail)
356
	{
355
	{
357
	    $q=$prevision->mettreAJourPrevision();
356
	    $q=$prevision->mettreAJourPrevision();
358
	    if ($q!=1)
357
	    if ($q!=1)
359
	    {
358
	    {
360
		$res=5;
359
		$res=5;
361
		echo "echec enregistrement prevision dans base de donnees <br />";
360
		echo "echec enregistrement prevision dans base de donnees <br />";
362
	    }else $res=1;
361
	    }else $res=1;
363
	}
362
	}
364
    }else{
363
    }else{
365
	//cas ou aucuen prevsion n'a deja ete rentree
364
	//cas ou aucuen prevsion n'a deja ete rentree
366
	if( $prevision->existePrevision()==0)
365
	if( $prevision->existePrevision()==0)
367
	{
366
	{
368
	    //test si la somme des previsions de depasse pas 24 heures
367
	    //test si la somme des previsions de depasse pas 24 heures
369
	    if (($sommePrev+($prevision->getDureePrevision()))<<$limiteHeureTravail)
368
	    if (($sommePrev+($prevision->getDureePrevision()))<<$limiteHeureTravail)
370
	    {
369
	    {
371
		$w =$prevision->enregistrerNewPrevision();
370
		$w =$prevision->enregistrerNewPrevision();
372
		if ($w!=1) {
371
		if ($w!=1) {
373
		    $res=6;
372
		    $res=6;
374
		    echo "erreur enregistrement prevision";
373
		    echo "erreur enregistrement prevision";
375
		}else $res=1;
374
		}else $res=1;
376
	    }
375
	    }
377
	}
376
	}
378
    }
377
    }
379
    return $res;
378
    return $res;
380
}
379
}
381
/**
380
/**
382
*fonction qui traite les absences 
381
*fonction qui traite les absences 
383
*@param : $abs : objet absence 
382
*@param : $abs : objet absence 
384
*@param : user: objet utilisateur
383
*@param : user: objet utilisateur
385
*@param $j : jour de la semaine : lundi =0
384
*@param $j : jour de la semaine : lundi =0
386
*supression d'eventuelle absences prealablement rentree
385
*supression d'eventuelle absences prealablement rentree
387
*supression et enregistrement effectif que si aucune lettre n'a prealablement ete 
386
*supression et enregistrement effectif que si aucune lettre n'a prealablement ete 
388
*renvoie 1 si enregistrement effectuee
387
*renvoie 1 si enregistrement effectuee
389
*met a jour la det de fin si l'absence fait partie d'une periode
388
*met a jour la det de fin si l'absence fait partie d'une periode
390
*renvoie code erreur si erreur
389
*renvoie code erreur si erreur
391
*/
390
*/
392
function traiterAbsence($abs,$user,$libelle)
391
function traiterAbsence($abs,$user,$libelle)
393
{
392
{
394
    $tabAbs=$abs->existeAbsence();
393
    $tabAbs=$abs->existeAbsence();
395
    $ok=true;//booleen indiquant si traitement a faire ou non
394
    $ok=true;//booleen indiquant si traitement a faire ou non
396
    $possible=true;//booleen indiquant que l'absence est possible
395
    $possible=true;//booleen indiquant que l'absence est possible
397
    
396
    
398
    //test si weekend =>on n'insere aucun enregistrement
397
    //test si weekend =>on n'insere aucun enregistrement
399
    if($libelle==GTT_NOM_WEEK_END)
398
    if($libelle==GTT_NOM_WEEK_END)
400
    {
399
    {
401
	$ok=false;
400
	$ok=false;
402
    }
401
    }
403
    //si chevauchement existe
402
    //si chevauchement existe
404
    
403
    
405
    if(count($tabAbs)>0)
404
    if(count($tabAbs)>0)
406
    {
405
    {
407
	//on sait que $tabAbs contient au plus un enregistrement
406
	//on sait que $tabAbs contient au plus un enregistrement
408
	//car la periode ne tient que sur une journee
407
	//car la periode ne tient que sur une journee
409
	$line=$tabAbs[0];
408
	$line=$tabAbs[0];
410
	//si pas meme identifiant 
409
	//si pas meme identifiant 
411
	if($line[GEST_CHAMPS_ID_MOTIF]!=$abs->getIdMotif())
410
	if($line[GEST_CHAMPS_ID_MOTIF]!=$abs->getIdMotif())
412
	{
411
	{
413
	    if($line[GEST_CHAMPS_DATE_ENVOI_LETTRE]!='0000-00-00')
412
	    if($line[GEST_CHAMPS_DATE_ENVOI_LETTRE]!='0000-00-00')
414
	    {
413
	    {
415
		//si le jour d'absence a ete valide
414
		//si le jour d'absence a ete valide
416
		$ok=false;
415
		$ok=false;
417
	    }else{
416
	    }else{
418
		//si absence non encore validee
417
		//si absence non encore validee
419
		//verifiaction pour un jour de conges payes ou recuperation
418
		//verifiaction pour un jour de conges payes ou recuperation
420
		if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
419
		if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
421
		{
420
		{
422
		    
421
		    
423
		    //recuperation de la duree de l'absence qui chevauche le jour demande
422
		    //recuperation de la duree de l'absence qui chevauche le jour demande
424
		    $debut=explode('-',$line[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
423
		    $debut=explode('-',$line[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
425
		    $fin=explode('-',$line[GEST_CHAMPS_DATE_FIN_ABSENCE]);
424
		    $fin=explode('-',$line[GEST_CHAMPS_DATE_FIN_ABSENCE]);
426
		    $dateDeb=mktime(0,0,0,$debut[1],$debut[2],$debut[0]);
425
		    $dateDeb=mktime(0,0,0,$debut[1],$debut[2],$debut[0]);
427
		    $dateFin=mktime(0,0,0,$fin[1],$fin[2],$fin[0]);
426
		    $dateFin=mktime(0,0,0,$fin[1],$fin[2],$fin[0]);
428
		    
427
		    
429
		    //verification si absence precedente est un conges payes
428
		    //verification si absence precedente est un conges payes
430
		    if($_POST["champ_libelle_type_jour".$line[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
429
		    if($_POST["champ_libelle_type_jour".$line[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
431
		    {
430
		    {
432
			$duree=intval((($dateFin-$dateDeb)/3600)/24);
431
			$duree=intval((($dateFin-$dateDeb)/3600)/24);
433
		    }else $duree=0;
432
		    }else $duree=0;
434
		    
433
		    
435
		    
434
		    
436
		    //verification si possible de prendre le conge paye
435
		    //verification si possible de prendre le conge paye
437
		    if($libelle==GTT_NOM_CONGES_PAYES)
436
		    if($libelle==GTT_NOM_CONGES_PAYES)
438
		    {
437
		    {
439
			if (((($user->getConges())+($duree)-($abs->getDureeAbsence()))<0))
438
			if (((($user->getConges())+($duree)-($abs->getDureeAbsence()))<0))
440
			{
439
			{
441
			   $possible=false;
440
			   $possible=false;
442
			}
441
			}
443
		    }else 
442
		    }else 
444
		    {
443
		    {
445
			//mise a jour de la quantite d'heure supp
444
			//mise a jour de la quantite d'heure supp
446
			$heureSup=$user->getQuota();
445
			$heureSup=$user->getQuota();
447
			$user->setQuota($heureSup-($user->getTempsTravail()));
446
			$user->setQuota($heureSup-($user->getTempsTravail()));
448
			
447
			
449
		    }
448
		    }
450
		}//fin test conges payes
449
		}//fin test conges payes
451
		
450
		
452
		
451
		
453
		
452
		
454
		//supression des anciennes absence dans le cas d'une nouvelle absence
453
		//supression des anciennes absence dans le cas d'une nouvelle absence
455
		if($possible==true)
454
		if($possible==true)
456
		{
455
		{
457
		    for ($p=0;$p<count($tabAbs);$p++)
456
		    for ($p=0;$p<count($tabAbs);$p++)
458
		    {
457
		    {
459
			$line1=$tabAbs[$p];
458
			$line1=$tabAbs[$p];
460
			//duree de l'absence a supprimer
459
			//duree de l'absence a supprimer
461
			$abs2=$abs;
460
			$abs2=$abs;
462
			$abs2->construireAbsence($line1);
461
			$abs2->construireAbsence($line1);
463
			
462
			
464
			$nbJour=$abs2->getDureeAbsence();
463
			$nbJour=$abs2->getDureeAbsence();
465
			 			 
464
			 			 
466
			//mise a jour des quota heures sup et des conges payes de l'utilisateur
465
			//mise a jour des quota heures sup et des conges payes de l'utilisateur
467
			if($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION)
466
			if($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUPERATION)
468
			{
467
			{
469
			    $quotaTemp=$user->getQuota();
468
			    $quotaTemp=$user->getQuota();
470
			    $user->setQuota($quotaTemp+(($user->getTempsTravail())*$nbJour));
469
			    $user->setQuota($quotaTemp+(($user->getTempsTravail())*$nbJour));
471
			    
470
			    
472
			}elseif($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART)
471
			}elseif($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_RECUP_PART)
473
			{
472
			{
474
			    $quotaTemp=$user->getQuota();
473
			    $quotaTemp=$user->getQuota();
475
			    $user->setQuota($quotaTemp+($nbJour*(($user->getTempsTravail())/2)));
474
			    $user->setQuota($quotaTemp+($nbJour*(($user->getTempsTravail())/2)));
476
			    
475
			    
477
			}else
476
			}else
478
			{
477
			{
479
			    if ($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
478
			    if ($_POST["champ_libelle_type_jour".$line1[GEST_CHAMPS_ID_MOTIF]]==GTT_NOM_CONGES_PAYES)
480
			    {
479
			    {
481
				$congesTemp=$user->getConges();
480
				$congesTemp=$user->getConges();
482
				$user->setConges($congesTemp+(1*$nbJour));
481
				$user->setConges($congesTemp+(1*$nbJour));
483
				
482
				
484
			    }
483
			    }
485
			}
484
			}
486
			$z=$abs->supprimerAbsence($abs->getIdUserAbsence(),$line1[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
485
			$z=$abs->supprimerAbsence($abs->getIdUserAbsence(),$line1[GEST_CHAMPS_DATE_DEBUT_ABSENCE]);
487
			if($z!=1)
486
			if($z!=1)
488
			{
487
			{
489
			    $res=7;
488
			    $res=7;
490
			}else $res=1;
489
			}else $res=1;
491
		    }
490
		    }
492
		}
491
		}
493
		
492
		
494
	    }
493
	    }
495
	}else
494
	}else
496
	{
495
	{
497
	    //si meme motif on ne fait rien
496
	    //si meme motif on ne fait rien
498
	    $ok=false;
497
	    $ok=false;
499
	}
498
	}
500
	
499
	
501
    }else{
500
    }else{
502
	//si pas de chevauchement
501
	//si pas de chevauchement
503
	$supprimTravail=true;
502
	$supprimTravail=true;
504
	
503
	
505
	//supression d'eventuelles travaux
504
	//supression d'eventuelles travaux
506
	if ($supprimTravail==true)
505
	if ($supprimTravail==true)
507
	{
506
	{
508
	    $res=&Travail::supprimerTachesUserDate($abs->getIdUserAbsence(),$abs->getDateDebAbsence());
507
	    $res=&Travail::supprimerTachesUserDate($abs->getIdUserAbsence(),$abs->getDateDebAbsence());
509
	    if($res!=1)
508
	    if($res!=1)
510
	    {
509
	    {
511
		$res=8;
510
		$res=8;
512
	    }
511
	    }
513
	}
512
	}
514
	
513
	
515
	//mise a jour des conge spayes et heures sup
514
	//mise a jour des conge spayes et heures sup
516
	
515
	
517
	if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
516
	if(($libelle==GTT_NOM_CONGES_PAYES)or ($libelle=GTT_NOM_RECUPERATION))
518
	{
517
	{
519
	    
518
	    
520
	     //verification si possible de prendre le conge paye
519
	     //verification si possible de prendre le conge paye
521
	    if($libelle==GTT_NOM_CONGES_PAYES)
520
	    if($libelle==GTT_NOM_CONGES_PAYES)
522
	    {
521
	    {
523
		if ((($user->getConges())-($abs->getDureeAbsence()))>=0)
522
		if ((($user->getConges())-($abs->getDureeAbsence()))>=0)
524
		{
523
		{
525
		    $temp=$user->getConges();
524
		    $temp=$user->getConges();
526
		    //mise a jour des conges payes
525
		    //mise a jour des conges payes
527
		    $user->setConges($temp-($abs->getDureeAbsence()));
526
		    $user->setConges($temp-($abs->getDureeAbsence()));
528
		    
527
		    
529
		}else $ok=false;
528
		}else $ok=false;
530
	    }else 
529
	    }else 
531
	    {
530
	    {
532
		//mise a jour de la quantite d'heure supp
531
		//mise a jour de la quantite d'heure supp
533
		$heureSup=$user->getQuota();
532
		$heureSup=$user->getQuota();
534
		$user->setQuota($heureSup-($user->getTempsTravail()));
533
		$user->setQuota($heureSup-($user->getTempsTravail()));
535
		
534
		
536
	    }
535
	    }
537
	}//fin test conges payes
536
	}//fin test conges payes
538
    }
537
    }
539
    //enregistrement de la nouvelle absence
538
    //enregistrement de la nouvelle absence
540
    //si traitement a faire
539
    //si traitement a faire
541
    if($ok==true and $possible==true)
540
    if($ok==true and $possible==true)
542
    {
541
    {
543
	$nouveau=true; //booleen indiquant s'il faut enregistrer une nouvelle absence
542
	$nouveau=true; //booleen indiquant s'il faut enregistrer une nouvelle absence
544
	$absencePrec=$abs->getAbsencesPrec();
543
	$absencePrec=$abs->getAbsencesPrec();
545
	$absenceSuiv=$abs->getAbsencesSuiv();
544
	$absenceSuiv=$abs->getAbsencesSuiv();
546
	//timestamp de la date de debut d'absence
545
	//timestamp de la date de debut d'absence
547
	$dDeb=explode('-',$abs->getDateDebAbsence());
546
	$dDeb=explode('-',$abs->getDateDebAbsence());
548
	$timeDeb=mktime(0,0,0,$dDeb[1],$dDeb[2],$dDeb[0]);
547
	$timeDeb=mktime(0,0,0,$dDeb[1],$dDeb[2],$dDeb[0]);
549
	
548
	
550
	//timestamp de la date de fin d'absence
549
	//timestamp de la date de fin d'absence
551
	$dFin=explode('-',$abs->getDateFinAbsence());
550
	$dFin=explode('-',$abs->getDateFinAbsence());
552
	$timeFin=mktime(0,0,0, $dFin[1], $dFin[2], $dFin[0]);
551
	$timeFin=mktime(0,0,0, $dFin[1], $dFin[2], $dFin[0]);
553
	
552
	
554
	//creation des timestamp des absences precedentes et suivantes
553
	//creation des timestamp des absences precedentes et suivantes
555
	if($absencePrec!=-1)
554
	if($absencePrec!=-1)
556
	{
555
	{
557
	    $finPrec=explode('-',$absencePrec->getDateFinAbsence());
556
	    $finPrec=explode('-',$absencePrec->getDateFinAbsence());
558
	    $datePrec=mktime(0,0,0,$finPrec[1],$finPrec[2],$finPrec[0]);
557
	    $datePrec=mktime(0,0,0,$finPrec[1],$finPrec[2],$finPrec[0]);
559
	}
558
	}
560
	//timestamp de l'absence suivant
559
	//timestamp de l'absence suivant
561
	if($absenceSuiv!=-1)
560
	if($absenceSuiv!=-1)
562
	{
561
	{
563
	    $debSuiv=explode('-',$absenceSuiv->getDateDebAbsence());
562
	    $debSuiv=explode('-',$absenceSuiv->getDateDebAbsence());
564
	    $dateSuiv=mktime(0,0,0,$debSuiv[1],$debSuiv[2],$debSuiv[0]);
563
	    $dateSuiv=mktime(0,0,0,$debSuiv[1],$debSuiv[2],$debSuiv[0]);
565
	}
564
	}
566
	//verification s'il existe des absences precedentes
565
	//verification s'il existe des absences precedentes
567
	//non encore validees
566
	//non encore validees
568
	//si pas d'absence precedentes
567
	//si pas d'absence precedentes
569
	if($absencePrec==-1)
568
	if($absencePrec==-1)
570
	{
569
	{
571
	    if ($absenceSuiv!=-1)
570
	    if ($absenceSuiv!=-1)
572
	    {
571
	    {
573
		//si absence suivante est contigue
572
		//si absence suivante est contigue
574
		if(isDateContigues($timeFin,$dateSuiv)==1)
573
		if(isDateContigues($timeFin,$dateSuiv)==1)
575
		{
574
		{
576
		    $absTemp=$absenceSuiv;
575
		    $absTemp=$absenceSuiv;
577
		   
576
		   
578
		    $absTemp->setDateDeb($abs->getDateDebAbsence());
577
		    $absTemp->setDateDeb($abs->getDateDebAbsence());
579
		   
578
		   
580
		    $w=$absTemp->supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
579
		    $w=$absTemp->supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
581
		    $resTemp=$absTemp->enregistrerNewAbsence();
580
		    $resTemp=$absTemp->enregistrerNewAbsence();
582
		    $nouveau=false;
581
		    $nouveau=false;
583
		    if ($resTemp!=1 or $w!=1)
582
		    if ($resTemp!=1 or $w!=1)
584
		    {
583
		    {
585
			$res=9;
584
			$res=9;
586
		    }
585
		    }
587
		}
586
		}
588
	    }
587
	    }
589
	}else//s'il existe une absence precedentes
588
	}else//s'il existe une absence precedentes
590
	{
589
	{
591
	    //si absence precedente contigue
590
	    //si absence precedente contigue
592
	    if(isDateContigues($datePrec,$timeDeb)==1)
591
	    if(isDateContigues($datePrec,$timeDeb)==1)
593
	    {
592
	    {
594
		$absTemp=$absencePrec;
593
		$absTemp=$absencePrec;
595
		$absTemp->setDateFin($abs->getDateFinAbsence());
594
		$absTemp->setDateFin($abs->getDateFinAbsence());
596
		$nouveau=false;
595
		$nouveau=false;
597
		//test si  l'absence suivante est vide 
596
		//test si  l'absence suivante est vide 
598
		if($absenceSuiv==-1)
597
		if($absenceSuiv==-1)
599
		{
598
		{
600
		  
599
		  
601
		    $resTemp=$absTemp->mettreAJourAbsence();
600
		    $resTemp=$absTemp->mettreAJourAbsence();
602
		    
601
		    
603
		    if($resTemp!=1)
602
		    if($resTemp!=1)
604
		    {
603
		    {
605
			$res=10;
604
			$res=10;
606
		    }
605
		    }
607
		}else//si absence suivante existe
606
		}else//si absence suivante existe
608
		{
607
		{
609
		    //test si absence suivante contigue
608
		    //test si absence suivante contigue
610
		    if(isDateContigues($timeFin,$dateSuiv)==1)
609
		    if(isDateContigues($timeFin,$dateSuiv)==1)
611
		    {
610
		    {
612
			$absTemp->setDateFin($absenceSuiv->getDateFinAbsence());
611
			$absTemp->setDateFin($absenceSuiv->getDateFinAbsence());
613
			//supression de l'absence suivante
612
			//supression de l'absence suivante
614
			$res=&Absence::supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
613
			$res=&Absence::supprimerAbsence($absenceSuiv->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
615
			if($res!=1)
614
			if($res!=1)
616
			{
615
			{
617
			    $res=11;
616
			    $res=11;
618
			}
617
			}
619
			//mise a jour de l'absence
618
			//mise a jour de l'absence
620
			 
619
			 
621
			$resTemp=$absTemp->enregistrerNewAbsence();
620
			$resTemp=$absTemp->enregistrerNewAbsence();
622
			
621
			
623
			if($resTemp!=1)
622
			if($resTemp!=1)
624
			{
623
			{
625
			    $res=12;
624
			    $res=12;
626
			}
625
			}
627
			
626
			
628
		    }else
627
		    }else
629
		    {
628
		    {
630
			//absence suivante non contigue
629
			//absence suivante non contigue
631
			//mise a jour de l'absence
630
			//mise a jour de l'absence
632
			$resTemp=$absTemp->mettreAJourAbsence();
631
			$resTemp=$absTemp->mettreAJourAbsence();
633
			
632
			
634
			if($resTemp!=1)
633
			if($resTemp!=1)
635
			{
634
			{
636
			    $res=13;
635
			    $res=13;
637
			}
636
			}
638
		    }
637
		    }
639
		}
638
		}
640
		
639
		
641
		
640
		
642
	    }else
641
	    }else
643
	    {
642
	    {
644
		//si l'absence precedente n'est pas contigue 
643
		//si l'absence precedente n'est pas contigue 
645
		if($absenceSuiv!=-1)//verification si absence suivante non vide
644
		if($absenceSuiv!=-1)//verification si absence suivante non vide
646
		{
645
		{
647
		    if(isDateContigues($timeFin,$dateSuiv)==1)
646
		    if(isDateContigues($timeFin,$dateSuiv)==1)
648
		    {
647
		    {
649
			//si contigue
648
			//si contigue
650
			$absTemp=$absenceSuiv;
649
			$absTemp=$absenceSuiv;
651
			$absTemp->setDateDeb($abs->getDateDebAbsence());
650
			$absTemp->setDateDeb($abs->getDateDebAbsence());
652
			//enregistrement de l'absence
651
			//enregistrement de l'absence
653
			$w=$absTemp->supprimerAbsence($absTemp->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
652
			$w=$absTemp->supprimerAbsence($absTemp->getIdUserAbsence(),$absenceSuiv->getDateDebAbsence());
654
			$resTemp=$absTemp->enregistrerNewAbsence();
653
			$resTemp=$absTemp->enregistrerNewAbsence();
655
			if($resTemp!=1 or $w!=1)
654
			if($resTemp!=1 or $w!=1)
656
			{
655
			{
657
			    $res=14;
656
			    $res=14;
658
			}
657
			}
659
			$nouveau=false;
658
			$nouveau=false;
660
		    }
659
		    }
661
		}
660
		}
662
		
661
		
663
	    }
662
	    }
664
	}
663
	}
665
	if($nouveau==true)
664
	if($nouveau==true)
666
	{
665
	{
667
	    $res=$abs->enregistrerNewAbsence();
666
	    $res=$abs->enregistrerNewAbsence();
668
	    if($res!=1)
667
	    if($res!=1)
669
	    {
668
	    {
670
		$res=15;
669
		$res=15;
671
	    } 
670
	    } 
672
	}
671
	}
673
	
672
	
674
	
673
	
675
	return array($res,$user);
674
	return array($res,$user);
676
    }
675
    }
677
}
676
}
678
/**
677
/**
679
*fonction qui verifie si deu dates sont contigues
678
*fonction qui verifie si deu dates sont contigues
680
*@param $dateVerif : timestamp unix
679
*@param $dateVerif : timestamp unix
681
*@param $date : timestamp unix
680
*@param $date : timestamp unix
682
*/
681
*/
683
function isDateContigues($dateVerif,$date)
682
function isDateContigues($dateVerif,$date)
684
{
683
{
685
    if ($dateVerif<$date)
684
    if ($dateVerif<$date)
686
    {
685
    {
687
	$dateDeb=$date;
686
	$dateDeb=$date;
688
	$dateFin=$dateVerif;
687
	$dateFin=$dateVerif;
689
    }else{
688
    }else{
690
	$dateDeb=$dateVerif;
689
	$dateDeb=$dateVerif;
691
	$dateFin=$date;
690
	$dateFin=$date;
692
    }
691
    }
693
    $r=-1;
692
    $r=-1;
694
    
693
    
695
   
694
   
696
    //verification si la date de debut est en semaine
695
    //verification si la date de debut est en semaine
697
    //ou lundi
696
    //ou lundi
698
    $jour=date('w',$dateDeb);
697
    $jour=date('w',$dateDeb);
699
    //si c un lundi
698
    //si c un lundi
700
    if ($jour==1)
699
    if ($jour==1)
701
    {
700
    {
702
	if(($dateDeb-(3600*24*3))==$dateFin)
701
	if(($dateDeb-(3600*24*3))==$dateFin)
703
	{
702
	{
704
	    $r=1;
703
	    $r=1;
705
	}
704
	}
706
    }else//si c un jour de semaine
705
    }else//si c un jour de semaine
707
    {
706
    {
708
	if(($dateDeb-(3600*24))==$dateFin)
707
	if(($dateDeb-(3600*24))==$dateFin)
709
	{
708
	{
710
	    $r=1;
709
	    $r=1;
711
	}
710
	}
712
    }
711
    }
713
    return $r;
712
    return $r;
714
    
713
    
715
}
714
}
716
 
715
 
717
/**
716
/**
718
*fonction traitant le menu travail
717
*fonction traitant le menu travail
719
*/
718
*/
720
function traiterAdminTravail($url, $semaine, $annee, $utilisateur)
719
function traiterAdminTravail($url, $semaine, $annee, $utilisateur)
721
{
720
{
722
	$text = creerEntetePage(GESTION_GESTIONDEPOSTE_L);
721
	$text = creerEntetePage(GESTION_GESTIONDEPOSTE_L);
723
	$form = afficherTableauJour($url, $utilisateur, $semaine, $annee);
722
	$form = afficherTableauJour($url, $utilisateur, $semaine, $annee);
724
	
723
	
725
	if (isset($_POST['champ_valider_travail']) and $_POST['champ_valider_travail'] != 'dejaValider' and $form->validate()) {    
724
	if (isset($_POST['champ_valider_travail']) and $_POST['champ_valider_travail'] != 'dejaValider' and $form->validate()) {    
726
		$form->process(traiterSemaine($utilisateur));
725
		$form->process(traiterSemaine($utilisateur));
727
		$t = afficherTableauJour($url, $utilisateur, $semaine, $annee);
726
		$t = afficherTableauJour($url, $utilisateur, $semaine, $annee);
728
		$text .= $t->ToHTml();
727
		$text .= $t->ToHTml();
729
	} else {
728
	} else {
730
		$text .= $form->ToHtml();
729
		$text .= $form->ToHtml();
731
	}
730
	}
732
	return $text;
731
	return $text;
733
}
732
}
734
 
733
 
735
?>
734
?>