/**
	 *
	 * Renvoi l'utilisateur de la session en cours (null si aucun utilisateur trouvé dans la session
	 *
	 * @return     UtilisateurProfessionnel utilisateur
	 */
	public static function getUtilisateursSessionEnCours() {
        if (isset($_SESSION) && isset($_SESSION['objets_propel']) && isset($_SESSION['objets_propel']['utilisateurProfessionnel'])
            && $_SESSION['objets_propel']['utilisateurProfessionnel'] != null
            && $_SESSION['objets_propel']['utilisateurProfessionnel'] instanceof UtilisateurProfessionnel) {
            //echo 'utilisateur recupere dans la session';
            return $_SESSION['objets_propel']['utilisateurProfessionnel'];
        } elseif (isset($_SESSION) && isset($_SESSION['login'])) {
            $utilisateur = UtilisateurProfessionnelQuery::create()->filterByLogin($_SESSION['login'])->findOne();
            if ($utilisateur != null) {
                $_SESSION['objets_propel']['utilisateurProfessionnel'] = $utilisateur;
            }
            return $utilisateur;
        } else {
            return null;
        }
	}
Example #2
0
	/**
	 * Gets the number of UtilisateurProfessionnel objects related by a many-to-many relationship
	 * to the current object by way of the j_aid_utilisateurs cross-reference table.
	 *
	 * @param      Criteria $criteria Optional query object to filter the query
	 * @param      boolean $distinct Set to true to force count distinct
	 * @param      PropelPDO $con Optional connection object
	 *
	 * @return     int the number of related UtilisateurProfessionnel objects
	 */
	public function countUtilisateurProfessionnels($criteria = null, $distinct = false, PropelPDO $con = null)
	{
		if(null === $this->collUtilisateurProfessionnels || null !== $criteria) {
			if ($this->isNew() && null === $this->collUtilisateurProfessionnels) {
				return 0;
			} else {
				$query = UtilisateurProfessionnelQuery::create(null, $criteria);
				if($distinct) {
					$query->distinct();
				}
				return $query
					->filterByAidDetails($this)
					->count($con);
			}
		} else {
			return count($this->collUtilisateurProfessionnels);
		}
	}
Example #3
0
	/**
	 * Get the associated UtilisateurProfessionnel object
	 *
	 * @param      PropelPDO Optional Connection object.
	 * @return     UtilisateurProfessionnel The associated UtilisateurProfessionnel object.
	 * @throws     PropelException
	 */
	public function getUtilisateurProfessionnel(PropelPDO $con = null)
	{
		if ($this->aUtilisateurProfessionnel === null && (($this->login !== "" && $this->login !== null))) {
			$this->aUtilisateurProfessionnel = UtilisateurProfessionnelQuery::create()->findPk($this->login, $con);
			/* The following can be used additionally to
				guarantee the related object contains a reference
				to this object.  This level of coupling may, however, be
				undesirable since it could result in an only partially populated collection
				in the referenced object.
				$this->aUtilisateurProfessionnel->addJScolClassess($this);
			 */
		}
		return $this->aUtilisateurProfessionnel;
	}
Example #4
0
    public function testDelete()
    {
        $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');

        $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(VENDREDI_s40j5)->getFirst();
        //on va vérifier que le delete change bien le update_ad
        $old_updated_at = $saisie->getUpdatedAt('U');
        sleep(1);
        $saisie->delete();
        $this->assertGreaterThan($old_updated_at, $saisie->getUpdatedAt('U'), 'le delete doit changer le updated_ad');
        $saisie = AbsenceEleveSaisieQuery::create()->filterByEleve($florence_eleve)->filterByDebutAbs(VENDREDI_s40j5.' 08:00:00')->findOne();
        $this->assertNull($saisie);
        $saisie = AbsenceEleveSaisieQuery::create()->includeDeleted()->filterByEleve($florence_eleve)->filterByDebutAbs(VENDREDI_s40j5.' 08:00:00')->findOne();
        $this->assertNotNull($saisie);

        AbsenceEleveSaisiePeer::enableAgregation();
        $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
        $lebesgue_prof = UtilisateurProfessionnelQuery::create()->findOneByLogin('Lebesgue');
        $saisie = new AbsenceEleveSaisie();
        $saisie->setEleve($florence_eleve);
        $saisie->setUtilisateurProfessionnel($lebesgue_prof);
        $saisie->setDebutAbs(JEUDI_s38j4.' 08:00:00');
        $saisie->setFinAbs(JEUDI_s38j4.' 09:00:00');
        $saisie->save();
        $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(JEUDI_s38j4)->findOne();
        $this->assertTrue($decompte->getManquementObligationPresence());
        $saisie->getEleve()->clearAllReferences();
        $saisie->delete();
        $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(JEUDI_s38j4)->findOne();
        $this->assertFalse($decompte->getManquementObligationPresence());
    }
Example #5
0
	public function testUpdateAbsenceAgregationTable() {
	    //on purge les decompte pour florence
	    $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    
	    $florence_eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(MARDI_s41j2.' 23:59:59'));
	    $this->assertEquals(11,AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->count());
	    
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    $florence_eleve->updateAbsenceAgregationTable(new DateTime(SAMEDI_s35j6.' 00:00:00'),new DateTime(DIMANCHEs35j7.' 23:59:59'));//ce test ne se terminait pas
	    $this->assertEquals(5,AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->count());
	    
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    $florence_eleve->updateAbsenceAgregationTable(null,new DateTime(MARDI_s41j2.' 23:59:59'));
	    $this->assertEquals(11,AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->count());

	    
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    $florence_eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(MARDI_s41j2.' 23:59:59'));
	    $this->assertEquals(11,AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->count());
	    
	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    $florence_eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(VENDREDI_s42j5.' 23:59:59'));
	    $this->assertEquals(31,AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->count());
	    $this->assertEquals(4, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByManquementObligationPresence(true)->count());
	    $this->assertEquals(1, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByManquementObligationPresence(true)->filterByNonJustifiee(false)->count());
	    $this->assertEquals(4, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByRetards(1)->count());
	    $this->assertEquals(1, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByRetards(2)->count());
	    $this->assertEquals(4, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByRetardsNonJustifies(1)->count());
	    $demi_journee =  AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByManquementObligationPresence(true)->filterByNonJustifiee(false)->findOne();
	    $this->assertEquals(JEUDI_s42j4.' 00:00:00', $demi_journee->getDateDemiJounee('Y-m-d H:i:s'));

	    AbsenceAgregationDecompteQuery::create()->deleteAll();
	    $florence_eleve->updateAbsenceAgregationTable(new DateTime(SAMEDI_s35j6.' 00:00:00'),new DateTime(DIMANCHEs35j7.' 23:59:59'));
	    $this->assertEquals(5,AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->count());
	    $this->assertEquals(0, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByManquementObligationPresence(true)->count());
	    $this->assertEquals(5, AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByRetards(0)->count());
	    AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->delete();
            $saisie = new AbsenceEleveSaisie();//on va vérifier que la mise à jour de la table d'agrégation est bien limité à 3 ans dans le passé et dans le futur
            $saisie->setEleve($florence_eleve);
            $saisie->setUtilisateurProfessionnel(UtilisateurProfessionnelQuery::create()->findOneByLogin('Dolto'));
            $before = new DateTime();
            $before->modify('-4 years');
            $saisie->setDebutAbs($before);
            $after = new DateTime();
            $after->modify('+4 years');
            $saisie->setFinAbs($after);
            $saisie->save();
            $now = new DateTime();
	    $florence_eleve->updateAbsenceAgregationTable();
            $col = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->orderByDateDemiJounee()->find();
            $this->assertTrue($now->format('U') - $col->get(1)->getDateDemiJounee('U') < 3600*24*365*3 + 3600*24);
            $this->assertTrue($now->format('U') - $col->get(1)->getDateDemiJounee('U') > 3600*24*365*3 - 3600*24);
            $this->assertTrue($col->getLast()->getDateDemiJounee('U') - $now->format('U') < 3600*24*365*3 + 3600*24);
            $this->assertTrue($col->getLast()->getDateDemiJounee('U') - $now->format('U') > 3600*24*365*3 - 3600*24);
	    
        try {
            $florence_eleve->updateAbsenceAgregationTable(new DateTime('1980-09-01 00:00:00'),null);
            $this->fail('Une exception doit être soulevée lors de cette demande car les dates sont trop larges');
        } catch (Exception $e) {
            $this->assertTrue(true);
        }
        try {
            $florence_eleve->updateAbsenceAgregationTable(new DateTime('2100-09-01 00:00:00'),null);
            $this->fail('Une exception doit être soulevée lors de cette demande car les dates sont trop larges');
        } catch (Exception $e) {
            $this->assertTrue(true);
        }
        try {
            $florence_eleve->updateAbsenceAgregationTable(null,new DateTime('2100-09-01 00:00:00'));
            $this->fail('Une exception doit être soulevée lors de cette demande car les dates sont trop larges');
        } catch (Exception $e) {
            $this->assertTrue(true);
        }
        try {
            $florence_eleve->updateAbsenceAgregationTable(null,new DateTime('1980-09-01 00:00:00'));
            $this->fail('Une exception doit être soulevée lors de cette demande car les dates sont trop larges');
        } catch (Exception $e) {
            $this->assertTrue(true);
        }
        
        
	}
                        if ($saisie->getEleve() == null) {
                            echo "Marqueur d'appel effectué";
                        } else {
                            echo $saisie->getEleve()->getCivilite() . ' ' . $saisie->getEleve()->getNom() . ' ' . $saisie->getEleve()->getPrenom();
                            echo ' ' . $saisie->getEleve()->getClasseNom();
                        }
                        echo '</td>
							<td>' . $version->getDateDescription() . '</td>
							<td>';
                        if ($version->getVersion() == 1) {
                            echo 'Créée le : ';
                        } else {
                            echo 'Modifiée le&nbsp;: ';
                        }
                        echo strftime("%a %d/%m/%Y %H:%M", $version->getVersionCreatedAt('U'));
                        $modifie_par_utilisateur = UtilisateurProfessionnelQuery::create()->filterByLogin($version->getVersionCreatedBy())->findOne();
                        if ($modifie_par_utilisateur != null) {
                            echo ' par ' . $modifie_par_utilisateur->getCivilite() . ' ' . $modifie_par_utilisateur->getNom() . ' ' . mb_substr($modifie_par_utilisateur->getPrenom(), 0, 1) . '.';
                        }
                        echo '</td>';
                        /*
                        echo '
                        <td>';
                        if ($version->getVersion() != $saisie->getVersion() && $saisie->getDeletedAt() == null) {
                        	echo '<a href="enregistrement_modif_saisie.php?id_saisie='.$saisie->getPrimaryKey().'&version='.$version->getVersion().'';
                        	echo'" target="_blank">Revenir à cette version</a>';
                        }
                        echo '</td>';
                        */
                        echo '
						</tr>';
Example #7
0
// initialisations
$mode_saisie = isset($_POST["mode"]) ? $_POST["mode"] :(isset($_GET["mode"]) ? $_GET["mode"] : NULL);
$presaisie = $mode_saisie == 'presaisie' ? true : false;
if ($acces_scol) $presaisie = false; // On force une saisie normale si profil scolarité
if ($acces_prof and !$acces_prof_suivi) $presaisie = true; // On force le mode 'présaisie' si on a un prof 'normal'
// Maintenant on peut utiliser $presaisie dans les tests de manière relativement fiable.

$id_classe = isset($_POST["id_classe"]) ? $_POST["id_classe"] :(isset($_GET["id_classe"]) ? $_GET["id_classe"] :NULL);
$periode_num = isset($_POST["periode_num"]) ? $_POST["periode_num"] :(isset($_GET["periode_num"]) ? $_GET["periode_num"] :NULL);
$fiche = isset($_POST["fiche"]) ? $_POST["fiche"] :(isset($_GET["fiche"]) ? $_GET["fiche"] :NULL);
$current_eleve_login = isset($_POST["current_eleve_login"]) ? $_POST["current_eleve_login"] :(isset($_GET["current_eleve_login"]) ? $_GET["current_eleve_login"] :NULL);
$ind_eleve_login_suiv = isset($_POST["ind_eleve_login_suiv"]) ? $_POST["ind_eleve_login_suiv"] :(isset($_GET["ind_eleve_login_suiv"]) ? $_GET["ind_eleve_login_suiv"] :NULL);
$current_eleve_login_ap = isset($NON_PROTECT["current_eleve_login_ap"]) ? traitement_magic_quotes(corriger_caracteres($NON_PROTECT["current_eleve_login_ap"])) :NULL;
$affiche_message = isset($_GET["affiche_message"]) ? $_GET["affiche_message"] :NULL;

$CurrentUser = UtilisateurProfessionnelQuery::create()->findPK($_SESSION['login']);




include "../lib/periodes.inc.php";

//*******************************************************************************************************
$msg = '';

// Le formulaire a été posté
if (isset($_POST['is_posted'])) {

	check_token();

    // On s'assure que la période sur laquelle on effectue l'enregistrement est valide
Example #8
0
 /**
  * Renvoie la liste des professeurs avec leurs matières rattachées (nom, prénom, login, liste matières)
  */
 public function listeProfesseursAvecMatieres()
 {
     $profs = UtilisateurProfessionnelQuery::create()->filterByStatut('professeur')->filterByEtat('actif')->find();
     $retour = $this->_format == 'xml' ? '<?xml version=\'1.0\' encoding=\'UTF-8\'?><professeurs>' : array();
     foreach ($profs as $prof) {
         $matieres = array();
         $profMat = $prof->getJProfesseursMatieressJoinMatiere();
         foreach ($profMat as $mat) {
             $matieres[] = $mat->getMatiere()->getMatiere();
         }
         if ($this->_format == 'xml') {
             $retour .= '
       <professeur>
         <nom>' . $prof->getNom() . '</nom>
         <prenom>' . $prof->getPrenom() . '</prenom>
         <civilite>' . $prof->getCivilite() . '</civilite>
         <login>' . $prof->getLogin() . '</login>
         <numind>' . $prof->getNumind() . '</numind>
         <email>' . $prof->getEmail() . '</email>';
             foreach ($matieres as $matiere) {
                 $retour .= '
           <matiere>' . $matiere . '</matiere>';
             }
             $retour .= '
       </professeur>
                 ';
         } else {
             $retour[] = array($prof->getNom(), $prof->getPrenom(), $prof->getCivilite(), $prof->getLogin(), $prof->getNumind(), $prof->getEmail(), $matieres);
         }
     }
     if ($this->_format == 'xml') {
         $retour .= '</professeurs>';
     }
     return $retour;
 }
Example #9
0
    }

    echo "<tr style='background-color :$background_couleur'>\n";

    echo '<td>';
    echo "<a href='visu_saisie.php?id_saisie=".$saisie->getPrimaryKey()."' style='display: block; height: 100%; color: #330033'> ";
    echo $saisie->getId();
    echo "</a>";
    echo '</td>';

	if (getFiltreRechercheParam('filter_saisies_supprimees') == 'y') {
	    echo '</td>';
	    echo '<td>';
	    echo "<a href='visu_saisie.php?id_saisie=".$saisie->getPrimaryKey()."' style='display: block; height: 100%; color: #330033'>\n";
	    echo (strftime("%a %d/%m/%Y %H:%M", $saisie->getDeletedAt('U')));
    	$suppr_utilisateur = UtilisateurProfessionnelQuery::create()->findPK($saisie->getDeletedBy());
    	if ($suppr_utilisateur != null) {
    		echo ' par '.  $suppr_utilisateur->getCivilite().' '.$suppr_utilisateur->getNom().' '.mb_substr($suppr_utilisateur->getPrenom(), 0, 1).'.';;
    	}
	    echo "</a>";
	    echo '</td>';
	}

    echo '<td>';
    if ($saisie->getEleve() != null) {
	echo "<table style='border-spacing:0px; border-style : none; margin : 0px; padding : 0px; font-size:100%; width:100%'>";
	echo "<tr style='border-spacing:0px; border-style : none; margin : 0px; padding : 0px; font-size:100%;'>";
	echo "<td style='border-spacing:0px; border-style : none; margin : 0px; padding : 0px; font-size:100%;'>";
	echo "<a href='visu_saisie.php?id_saisie=".$saisie->getPrimaryKey()."' style='display: block; height: 100%; color: #330033'> ";
	echo ($saisie->getEleve()->getCivilite().' '.$saisie->getEleve()->getNom().' '.$saisie->getEleve()->getPrenom());
	echo "</a>";
	/**
	 * Get the associated UtilisateurProfessionnel object
	 *
	 * @param      PropelPDO Optional Connection object.
	 * @return     UtilisateurProfessionnel The associated UtilisateurProfessionnel object.
	 * @throws     PropelException
	 */
	public function getModifieParUtilisateur(PropelPDO $con = null)
	{
		if ($this->aModifieParUtilisateur === null && (($this->modifie_par_utilisateur_id !== "" && $this->modifie_par_utilisateur_id !== null))) {
			$this->aModifieParUtilisateur = UtilisateurProfessionnelQuery::create()->findPk($this->modifie_par_utilisateur_id, $con);
			/* The following can be used additionally to
				guarantee the related object contains a reference
				to this object.  This level of coupling may, however, be
				undesirable since it could result in an only partially populated collection
				in the referenced object.
				$this->aModifieParUtilisateur->addModifiedAbsenceEleveTraitements($this);
			 */
		}
		return $this->aModifieParUtilisateur;
	}
	/**
	 * Removes this object from datastore and sets delete attribute.
	 *
	 * @param      PropelPDO $con
	 * @return     void
	 * @throws     PropelException
	 * @see        BaseObject::setDeleted()
	 * @see        BaseObject::isDeleted()
	 */
	public function delete(PropelPDO $con = null)
	{
		if ($this->isDeleted()) {
			throw new PropelException("This object has already been deleted.");
		}

		if ($con === null) {
			$con = Propel::getConnection(UtilisateurProfessionnelPeer::DATABASE_NAME, Propel::CONNECTION_WRITE);
		}

		$con->beginTransaction();
		try {
			$deleteQuery = UtilisateurProfessionnelQuery::create()
				->filterByPrimaryKey($this->getPrimaryKey());
			$ret = $this->preDelete($con);
			if ($ret) {
				$deleteQuery->delete($con);
				$this->postDelete($con);
				$con->commit();
				$this->setDeleted(true);
			} else {
				$con->commit();
			}
		} catch (Exception $e) {
			$con->rollBack();
			throw $e;
		}
	}
	public function testGetAidDetailssStatutCpe()
	{
		$dolto = UtilisateurProfessionnelQuery::create()->findOneByLogin('Dolto');
		$aid_detailss = $dolto->getAidDetailss();
		$this->assertEquals(1,$aid_detailss->count());
	}
	public function testCompte_demi_journee()
	{
		$florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
		$saisie_col = AbsenceEleveSaisieQuery::create()->orderByDebutAbs(Criteria::DESC);
        try {
            AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col);
            $this->fail('Une exception doit être soulevée lors de cette sauvegarde');
        } catch (Exception $e) {
            $this->assertTrue(true);
        }
        
        $this->assertTrue(AbsencesEleveSaisieHelper::compte_demi_journee(new PropelCollection())->isEmpty());
        
        $saisie_col = new PropelCollection();
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-01 08:00:00');
        $saisie->setFinAbs('2010-11-01 13:00:00');
        $saisie_col->append($saisie);
		saveSetting('abs2_heure_demi_journee','11:50');
        $this->assertEquals(1,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		saveSetting('abs2_heure_demi_journee','11:10');
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
		saveSetting('abs2_heure_demi_journee','11:50');
        
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-01 09:00:00');
        $saisie->setFinAbs('2010-11-01 17:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-01 09:00:00');
        $saisie->setFinAbs('2010-11-01 17:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 10:00:00');
        $saisie->setFinAbs('2010-11-02 10:50:00');
        $saisie_col->append($saisie);
        $this->assertEquals(3,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-02 13:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(3,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-02 17:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(4,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-03 10:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-02 11:00:00');
        $saisie->setFinAbs('2010-11-03 17:30:00');//c'est un mercredi am donc on le compte pas, le total resta à 5
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-03 16:00:00');
        $saisie->setFinAbs('2010-11-03 17:30:00');
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-03 16:00:00');
        $saisie->setFinAbs('2010-11-04 02:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(5,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-03 16:00:00');
        $saisie->setFinAbs('2010-11-04 09:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(6,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
		$saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-04 15:00:00');
        $saisie->setFinAbs('2010-11-04 16:00:00');
        $saisie_col->append($saisie);
        $this->assertEquals(7,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());
        
        $saisie_col = new PropelCollection();
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-05 14:00:00');
        $saisie->setFinAbs('2010-11-05 15:00:00');
        $saisie_col->append($saisie);
            saveSetting('abs2_heure_demi_journee','12:50');
        $this->assertEquals('12:00',AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->getFirst()->format('H:i'));
            saveSetting('abs2_heure_demi_journee','11:50'); 

		$florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu');
		$lebesgue_prof = UtilisateurProfessionnelQuery::create()->findOneByLogin('Lebesgue');
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-10-19 08:00:00');
        $saisie->setFinAbs('2010-10-19 16:30:00');
        $saisie->setEleve($florence_eleve);
        $saisie->setUtilisateurProfessionnel($lebesgue_prof);
        $saisie->save();
        $saisie_col = new PropelCollection();
        $saisie_col->append($saisie);
        $this->assertEquals(2,AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->count());

        //on va tester les effets de borne d'intervalle pour la bascule de midi
        saveSetting('abs2_heure_demi_journee','11:55');
        $saisie_col = new PropelCollection();
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-05 11:55:00');//cette saisie va compter pour une après midi
        $saisie->setFinAbs('2010-11-05 12:25:00');
        $saisie_col->append($saisie);
        $this->assertEquals('12:00',AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->getFirst()->format('H:i'));
        $saisie_col = new PropelCollection();
        $saisie = new AbsenceEleveSaisie();
        $saisie->setDebutAbs('2010-11-05 11:50:00');
        $saisie->setFinAbs('2010-11-05 12:25:00');
        $saisie_col->append($saisie);
        $this->assertEquals('00:00',AbsencesEleveSaisieHelper::compte_demi_journee($saisie_col)->getFirst()->format('H:i'));
	}
	/**
	 * Returns a new UtilisateurProfessionnelQuery object.
	 *
	 * @param     string $modelAlias The alias of a model in the query
	 * @param     Criteria $criteria Optional Criteria to build the query from
	 *
	 * @return    UtilisateurProfessionnelQuery
	 */
	public static function create($modelAlias = null, $criteria = null)
	{
		if ($criteria instanceof UtilisateurProfessionnelQuery) {
			return $criteria;
		}
		$query = new UtilisateurProfessionnelQuery();
		if (null !== $modelAlias) {
			$query->setModelAlias($modelAlias);
		}
		if ($criteria instanceof Criteria) {
			$query->mergeWith($criteria);
		}
		return $query;
	}