<?php
// +------------------------------------------------------------------------------------------------------+
// | PHP version 5.1.1                                                                                    |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore.                                                                         |
// |                                                                                                      |
// | Foobar 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.                                                                  |
// |                                                                                                      |
// | Foobar 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 Foobar; if not, write to the Free Software                                                |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id$
/**
* Classe Utilisateur
*
* Description
*
*@package eFlore
*@subpackage modele
//Auteur original :
*@version 3
*@author        Shaheen ABDOOL RAHEEM <shaheenar50@hotmail.com>
//Autres auteurs :
*@version 4
*@author        Jean-Pascal MILCENT <jpm@clapas.org>
*@author        aucun
*@copyright     Tela-Botanica 2000-2006
*@version       $Revision$ $Date$
// +------------------------------------------------------------------------------------------------------+
*/

/**
* class Utilisateur : est à la fois le DAO et le conteneur de la table gestion_utilisateur.
* classe métier
*/
class Utilisateur extends aGttSql {
	/*** Constantes : */
	const GU_TOUS = 'UTILISATEUR_TOUS';
	const GU_ID = 'UTILISATEUR_ID';
	const GU_ID_MAX = 'UTILISATEUR_ID_MAX';
	const GU_CE_STATUT = 'UTILISATEUR_CE_STATUT';
	const GU_MAIL = 'UTILISATEUR_MAIL';
	const GU_TOUS_AFFICHABLE = 'UTILISATEUR_TOUS_AFFICHABLE';
	const GU_ADMIN = 'UTILISATEUR_ADMIN';

	/*** Attributs : */
	private $id_utilisateur;
	private $ce_statut = 0;
	private $nom;
	private $prenom;
	private $password;
	private $email;
	private $telephone;
	private $adresse;
	private $code_postal;
	private $ville;
	private $quota_heures_supp = 0;
	private $conges_payes = 0;
	private $temps_de_travail_jour = 7;
	private $temps_de_travail_mois = 0;
	private $tdt_lundi = 0;
	private $tdt_mardi = 0;
	private $tdt_mercredi = 0;
	private $tdt_jeudi = 0;
	private $tdt_vendredi = 0;
	private $tdt_samedi = 0;
	private $tdt_dimanche = 0;
	private $mark_admin = 0;
	private $mark_recapitulatif = 1;
	private $notes;

	/*** Aggregations : */

	/*** Constructeur : */
	public function __construct($cmd = null, $parametres = null)
	{
		$this->dao_table_nom = 'gestion_utilisateur';
		$this->dao_correspondance = array(
			'gu_id_utilisateur'	=> 'id_utilisateur',
			'gu_ce_statut'	=> 'ce_statut',
			'gu_nom'	=> 'nom',
			'gu_prenom'	=> 'prenom',
			'gu_password'	=> 'password',
			'gu_email'	=> 'email',
			'gu_telephone'	=> 'telephone',
			'gu_adresse'	=> 'adresse',
			'gu_code_postal'	=> 'code_postal',
			'gu_ville'	=> 'ville',
			'gu_quota_heures_supp'	=> 'quota_heures_supp',
			'gu_conges_payes'	=> 'conges_payes',
			'gu_temps_de_travail_jour'	=> 'temps_de_travail_jour',
			'gu_temps_de_travail_mois'	=> 'temps_de_travail_mois',
			'gu_tdt_lundi'	=> 'tdt_lundi',
			'gu_tdt_mardi'	=> 'tdt_mardi',
			'gu_tdt_mercredi'	=> 'tdt_mercredi',
			'gu_tdt_jeudi'	=> 'tdt_jeudi',
			'gu_tdt_vendredi'	=> 'tdt_vendredi',
			'gu_tdt_samedi'	=> 'tdt_samedi',
			'gu_tdt_dimanche'	=> 'tdt_dimanche',
			'gu_mark_admin'	=> 'mark_admin',
			'gu_mark_recapitulatif'	=> 'mark_recapitulatif',
			'gu_notes'	=> 'notes');

		// Si l'on veut remplir l'objet à la création on lance la requete correspondante
		if (!is_null($cmd)) {
			$this->consulter($cmd, $parametres, true);
		}
	}

	/*** Accesseurs : */
	// Id Utilisateur
	public function getIdUtilisateur()
	{
		return $this->id_utilisateur;
	}
	public function setIdUtilisateur( $iu )
	{
		$this->id_utilisateur = $iu;
	}

	// Gus Id Utilisateur Statut
	public function getCeStatut()
	{
		return $this->ce_statut;
	}
	public function setCeStatut( $cs )
	{
		$this->ce_statut = $cs;
	}

	// Nom
	public function getNom()
	{
		return $this->nom;
	}
	public function setNom( $n )
	{
		if (!is_null($n)) {
			$this->nom = strtoupper($n);
		} else {
			$this->nom = $n;
		}
	}

	// Prenom
	public function getPrenom()
	{
		return $this->prenom;
	}
	public function setPrenom( $p )
	{
		$this->prenom = $p;
	}

	// Password
	public function getPassword()
	{
		return $this->password;
	}
	public function setPassword( $p )
	{
		if (!is_null($p)) {
			$this->password = md5($p);
		} else {
			$this->password = $p;
		}
	}

	// Email
	public function getEmail()
	{
		return $this->email;
	}
	public function setEmail( $e )
	{
		$this->email = $e;
	}

	// Telephone
	public function getTelephone()
	{
		return $this->telephone;
	}
	public function setTelephone( $t )
	{
		$this->telephone = (string) $t;
	}

	// Adresse
	public function getAdresse()
	{
		return $this->adresse;
	}
	public function setAdresse( $a )
	{
		$this->adresse = $a;
	}

	// Code Postal
	public function getCodePostal()
	{
		return $this->code_postal;
	}
	public function setCodePostal( $cp )
	{
		$this->code_postal = $cp;
	}

	// Ville
	public function getVille()
	{
		return $this->ville;
	}
	public function setVille( $v )
	{
		$this->ville = $v;
	}

	// Quota Heures Supp
	public function getQuotaHeuresSupp()
	{
		return $this->quota_heures_supp;
	}
	public function setQuotaHeuresSupp( $qhs )
	{
		$this->quota_heures_supp = $qhs;
	}

	// Conges Payes
	public function getCongesPayes()
	{
		return $this->conges_payes;
	}
	public function setCongesPayes( $cp )
	{
		$this->conges_payes = $cp;
	}

	// Temps De Travail Jour
	public function getTempsDeTravailJour()
	{
		return $this->temps_de_travail_jour;
	}
	public function setTempsDeTravailJour( $tdt )
	{
		$this->temps_de_travail_jour = $tdt;
	}

	// Temps De Travail Mois
	public function getTempsDeTravailMois()
	{
		return $this->temps_de_travail_mois;
	}
	public function setTempsDeTravailMois( $tdt )
	{
		$this->temps_de_travail_mois = $tdt;
	}

	// Tdt Lundi
	public function getTdtLundi()
	{
		return $this->tdt_lundi;
	}
	public function setTdtLundi( $tdt )
	{
		$this->tdt_lundi = $tdt;
	}

	// Tdt Mardi
	public function getTdtMardi()
	{
		return $this->tdt_mardi;
	}
	public function setTdtMardi( $tdt )
	{
		$this->tdt_mardi = $tdt;
	}
	
	// Tdt Mercredi
	public function getTdtMercredi()
	{
		return $this->tdt_mercredi;
	}
	public function setTdtMercredi( $tdt )
	{
		$this->tdt_mercredi = $tdt;
	}
	
	// Tdt Jeudi
	public function getTdtJeudi()
	{
		return $this->tdt_jeudi;
	}
	public function setTdtJeudi( $tdt )
	{
		$this->tdt_jeudi = $tdt;
	}

	// Tdt Vendredi
	public function getTdtVendredi()
	{
		return $this->tdt_vendredi;
	}
	public function setTdtVendredi( $tdt )
	{
		$this->tdt_vendredi = $tdt;
	}
	
	// Tdt Samedi
	public function getTdtSamedi()
	{
		return $this->tdt_samedi;
	}
	public function setTdtSamedi( $tdt )
	{
		$this->tdt_samedi = $tdt;
	}

	// Tdt Dimanche
	public function getTdtDimanche()
	{
		return $this->tdt_dimanche;
	}
	public function setTdtDimanche( $tdt )
	{
		$this->tdt_dimanche = $tdt;
	}

	// Mark Admin
	public function getMarkAdmin()
	{
		return $this->mark_admin;
	}
	public function setMarkAdmin( $ma )
	{
		$this->mark_admin = $ma;
	}

	// Mark Recapitulatif
	public function getMarkRecapitulatif()
	{
		return $this->mark_recapitulatif;
	}
	public function setMarkRecapitulatif( $mr )
	{
		$this->mark_recapitulatif = $mr;
	}

	// Notes
	public function getNotes()
	{
		return $this->notes;
	}
	public function setNotes( $n )
	{
		$this->notes = $n;
	}

	/*** Méthodes : */

	/**
	* Consulter la table gestion_utilisateur.
	* @return mixed un tableau d'objets Utilisateur s'il y en a plusieurs, l'objet Utilisateur s'il y en a 1 seul sinon false.
	*/
	public function consulter($cmd = '', $parametres = array(), $instancier = false)
	{
		switch ($cmd) {
			case Utilisateur::GU_TOUS:
				$requete = 	'SELECT * '.
							'FROM gestion_utilisateur '.
							'ORDER BY gu_nom, gu_prenom ASC';
				break;
			case Utilisateur::GU_ID:
				$requete = 	'SELECT * '.
							'FROM gestion_utilisateur '.
							'WHERE gu_id_utilisateur = #0 ';
				break;
			case Utilisateur::GU_ID_MAX:
				$requete =	'SELECT MAX(gu_id_utilisateur) AS gu_id_utilisateur '.
							'FROM gestion_utilisateur ';
				break;
			case Utilisateur::GU_CE_STATUT:
				$requete =	'SELECT * '.
							'FROM gestion_utilisateur '.
							'WHERE gu_ce_statut = "#0" ';
				break;
			case Utilisateur::GU_MAIL:
				$requete =	'SELECT * '.
							'FROM gestion_utilisateur '.
							'WHERE gu_email = "#0" ';
				break;
			case Utilisateur::GU_TOUS_AFFICHABLE:
				$requete = 	'SELECT * '.
							'FROM gestion_utilisateur '.
							'WHERE gu_mark_recapitulatif = 0 '.
							'ORDER BY gu_nom, gu_prenom ASC';
				break;
			case Utilisateur::GU_ADMIN:
				$requete = 	'SELECT * '.
							'FROM gestion_utilisateur '.
							'WHERE gu_mark_admin = 1 ';
				break;
			
			default :
				$message = 'Commande '.$cmd.'inconnue!';
				$e = GestionnaireErreur::formaterMessageErreur(__FILE__, __LINE__, $message);
    			trigger_error($e, E_USER_ERROR);
		}
		return parent::consulter($requete, $parametres, $instancier);
	}

	public function supprimer()
	{
		$requete = 	'DELETE FROM gestion_utilisateur '.
					'WHERE gu_id_utilisateur = '.$this->getIdUtilisateur();
		$resultat = $GLOBALS['db']->query($requete);
		(DB::isError($resultat)) ? die (GestionnaireErreur::retournerErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;

		if ($GLOBALS['db']->affectedRows() == 1) {
			return true;
		} elseif ($GLOBALS['db']->affectedRows() == 0) {
			return false;
		}
	}

	/**augmenter le nombre d'heure sup
	*un acces est fait a la bse de donnees pour enregistrer les changements en temps reel
 	*/
	public function augmenterQuotaHeuresSup($nb)
	{
		$this->quota_heures_supp =  $this->quota_heures_supp + abs($nb);
	}

	/**diminuer le nb d'heures sup*/
	public function diminuerQuotaHeuresSup($nb)
	{
		$this->quota_heures_supp =  $this->quota_heures_supp -  abs($nb);
		/*un quota heure supp negatif implique qu'il y a des heures a rattraper*/
	}

	/**augmenter le nombre de jours de conges */
	public function augmenterCongesPayes($nb)
	{
		$this->conges_payes = $this->conges_payes +  abs($nb);
	}

	/**diminuer le nombre de jour de conges */
	public function diminuerCongesPayes($nb)
	{
		$this->conges_payes = $this->conges_payes -  abs($nb);
	}
}

/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log$
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>