public function testPeerUpdateAgregationTable() { //on va modifier à la main une saisie AbsenceAgregationDecompteQuery::create()->deleteAll(); foreach (EleveQuery::create()->find() as $eleve) { $eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(DIMANCHE_s41j7.' 23:59:59')); } sleep(1); $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu'); $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(SAMEDI_s40j6)->getFirst(); $saisie_id = $saisie->getId(); mysqli_query($GLOBALS["mysqli"], "update a_saisies set updated_at = now() where id = ".$saisie_id); $this->assertFalse(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable(null, null, 0)); $col = new PropelCollection(); $col->append($saisie); AbsenceAgregationDecomptePeer::updateAgregationTable($col); $this->assertTrue(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(DIMANCHE_s41j7.' 23:59:59'),0)); $this->assertTrue(AbsenceAgregationDecomptePeer::checkSynchroAbsenceAgregationTable(null, null, 0)); AbsenceAgregationDecompteQuery::create()->deleteAll(); foreach (EleveQuery::create()->find() as $eleve) { $eleve->updateAbsenceAgregationTable(new DateTime(VENDREDI_s40j5.' 00:00:00'),new DateTime(DIMANCHE_s41j7.' 23:59:59')); } sleep(1); $florence_eleve = EleveQuery::create()->findOneByLogin('Florence Michu'); $saisie = $florence_eleve->getAbsenceEleveSaisiesDuJour(VENDREDI_s40j5)->getFirst(); $saisie_id = $saisie->getId(); mysqli_query($GLOBALS["mysqli"], "update a_saisies set fin_abs = '".VENDREDI_s40j5." 08:10:00' where id = ".$saisie_id);//ça devient un retard $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(VENDREDI_s40j5)->findOne(); $this->assertTrue($decompte->getManquementObligationPresence()); $this->assertEquals(0,$decompte->getRetards()); $saisie->getEleve()->clearAllReferences(); $saisie->clearAllReferences(); $saisie->reload(); $col = new PropelCollection(); $col->append($saisie); AbsenceAgregationDecomptePeer::updateAgregationTable($col); $decompte = AbsenceAgregationDecompteQuery::create()->filterByEleve($florence_eleve)->filterByDateDemiJounee(VENDREDI_s40j5)->findOne(); $this->assertFalse($decompte->getManquementObligationPresence()); $this->assertEquals(1,$decompte->getRetards()); $saisie->setFinAbs(VENDREDI_s40j5.' 09:00:00'); $saisie->save(); AbsenceAgregationDecompteQuery::create()->deleteAll(); AbsenceAgregationDecomptePeer::updateAgregationTable(AbsenceEleveSaisieQuery::create()->filterByPlageTemps(new DateTime(VENDREDI_s40j5), new DateTime(DIMANCHE_s41j7))->find()); $eleve_col = EleveQuery::create()->useAbsenceEleveSaisieQuery()->filterByPlageTemps(new DateTime(VENDREDI_s40j5), new DateTime(DIMANCHE_s41j7))->endUse()->find(); foreach($eleve_col as $eleve) { $this->assertTrue($eleve->checkSynchroAbsenceAgregationTable(new DateTime(SAMEDI_s40j6.' 00:00:00'),new DateTime(MARDI_s41j2))); } }
/** * Met à jour la table d'agrégation pour toutes les saisies de ce traitement * * @return void */ public function updateAgregationTable() { AbsenceAgregationDecomptePeer::updateAgregationTable($this->getAbsenceEleveSaisies()); }