<?php
class GttCtrlActionPreferences extends aControlleurAction {

    public function __construct(Registre $Registre)
    {
    	$Registre->ajouterEspace('Preferences', 'preferences');
    }

    public function executer()
    {
		// Liste des projets
    	$aso_preferences = array();
    	$this->getRegistre()->setTitre('Modifier mes préférences');
    	$Projet = new Projet();
    	$tab_projets = $Projet->consulter(Projet::GP_TOUS);

		// Temps de travail perso sur chaque projet
		$aso_temps_perso = array();
		$TravailProjet = new TravailProjet();
		$utilisateurEnCours = $GLOBALS['_GTT_']['Utilisateur'];
		$tab_temps_perso = $TravailProjet->getTempsTravailUtilisateurParProjet($utilisateurEnCours->getIdUtilisateur());
    	//echo '<pre>'.print_r($tab_temps_perso, true).'</pre>';

		if (false === $tab_temps_perso) {
			$aso_preferences['messages'][] = "Impossible de lire le temps de travail personnel";
		} else {
			// Parcours du tableau de temps de travail perso par projet
	    	foreach ($tab_temps_perso as $tp) {
				$aso_temps_perso[$tp[1]] = array(
					'temps_heures' => $tp[2],
					'temps_jours' => floor(($tp[2] / 7))
				);
	    	}
		}
		//echo '<pre>'.print_r($aso_temps_perso, true).'</pre>';

		if (false == $tab_projets) {
			$aso_preferences['messages'][] = "Veuillez commencer par ajouter des catégories de projet et des projets !";
			$aso_preferences['preferences'] = false;
		} else {
    		$aso_preferences['nbre_projets'] = count($tab_projets);
			// Parcours du tableau de projets
	    	foreach ($tab_projets as $Projet) {
				// Vérification de la présence du projet dans les préférences de l'utilisateur
				$UtilisateurAProjet = new UtilisateurAProjet();
				$cmd = UtilisateurAProjet::GUAP_ID;
				$param = array($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur(), $Projet->getIdProjet());
				$coche = false;
				$present = $UtilisateurAProjet->consulter($cmd, $param);
				if ($present) {
					$coche = true;
				}
	
				// Récupération de la catégorie du projet
				$ProjetCategorie = new ProjetCategorie();
				$Categorie = current($ProjetCategorie->consulter(ProjetCategorie::GPC_ID, $Projet->getCeCategorie()));
	
				// Récupération de toutes les infos
				$aso_preferences['preferences'][$Categorie->getLibelle()][] = array(
					'id' => $Projet->getIdProjet(),
					'valeur' => $Projet->getIdProjet(),
					'no' => $Projet->getNom(),
					'de' => $Projet->getDescription(),
					'dade' => $Projet->getDateDebut(),
					'dafi' => $Projet->getDateFin(),
					'dupr' => $Projet->getDureePrevue(),
					'dufi' => $Projet->getDureeFinance(),
					'tpp' => $aso_temps_perso[$Projet->getIdProjet()]['temps_jours'], // temps perso. passé
					'av' => $Projet->getAvancement(),
					'avc' => $Projet->getAvancementCalcule(), // trop de la boulette !
					'coche' => $coche);
	    	}
	    	ksort($aso_preferences['preferences']);
		}

    	//echo '<pre>'.print_r($aso_preferences, true).'</pre>';
		$this->getRegistre()->ajouterDonnee('preferences', $aso_preferences);
    }

    public function executerValider()
    {
    	// Mise à jour des Préférences
    	$UtilisateurAProjet = new UtilisateurAProjet();
    	$UtilisateurAProjet->setIdUtilisateur($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur());
    	$UtilisateurAProjet->supprimer();
    	//echo '<pre>'.print_r($_POST, true).'</pre>';
    	if (isset($_POST['pr'])) {
	    	foreach ($_POST['pr'] as $pr_id) {
	    		$UtilisateurAProjet = new UtilisateurAProjet();
				$UtilisateurAProjet->setIdUtilisateur($GLOBALS['_GTT_']['Utilisateur']->getIdUtilisateur());
				$UtilisateurAProjet->setIdProjet($pr_id);
				$UtilisateurAProjet->ajouter();
	    	}
    	}
    	
    	// Action suivante
    	$this->setSuivant('__defaut__');
    }
}
?>
