Ejemplo n.º 1
0
 /**
  * @param $oRole
  */
 public function setRoles($oRole)
 {
     $oUserRoles = new UserRole();
     $oUserRoles->setRole($oRole);
     $oUserRoles->setUser($this);
     $aCollection = new \PropelCollection();
     $aCollection->append($oUserRoles);
     $this->setUserRoles($aCollection);
 }
Ejemplo n.º 2
0
    /**
     * Compte les demi-journees saisies. Les saisies doivent ètre triées par ordre de début.
     * Cette méthode ne travaille que sur les dates, et prend en compte les fermeture de l'établissement
     *
     * @param PropelObjectCollection $abs_saisie_col collection d'objets AbsenceEleveSaisie
     *
     * @return PropelCollection une collection de date time par demi journee comptee (un datetime pour le matin et un datetime pour l'apres midi
     */

    public static function compte_demi_journee($abs_saisie_col, $date_debut_iteration = null, $date_fin_iteration = null) {
        if ($abs_saisie_col->isEmpty()) {
            return new PropelCollection();
        }
        
        $abs_saisie_col->uasort(array("AbsencesEleveSaisieHelper", "compare_debut_absence"));
        
        //on récupère l'heure de demi-journée
        $heure_demi_journee = 11;//11:50 par défaut si rien n'est précisé dans les settings
        $minute_demi_journee = 50;
        if (getSettingValue("abs2_heure_demi_journee") != null) {
            try {
                $dt_demi_journee = new DateTime(getSettingValue("abs2_heure_demi_journee"));
                $heure_demi_journee = $dt_demi_journee->format('H');
                $minute_demi_journee = $dt_demi_journee->format('i');
            } catch (Exception $x) {
            }
        }
         
        //on va regarder la date du début pour notre algorithme
        if ($date_debut_iteration == null) {
            $date_debut_iteration = $abs_saisie_col->getFirst()->getDebutAbs(null);
        }
        if ($date_debut_iteration->format('Hi') < $heure_demi_journee.$minute_demi_journee) {
            $date_debut_iteration->setTime(0, 0, 0);
        } else {
            $date_debut_iteration->setTime(12, 0, 0);
        }
              
        //on va regarder la date du fin pour notre algorithme
        if ($date_fin_iteration == null) {
            foreach ($abs_saisie_col as $saisie) {
                if ($date_fin_iteration == null || $saisie->getFinAbs('U') > $date_fin_iteration->format('U')) {
                    $date_fin_iteration = $saisie->getFinAbs(null);
                }
            }
        }
        if ($date_fin_iteration->format('Hi') < $heure_demi_journee.$minute_demi_journee) {
            $date_fin_iteration->setTime(12, 0, 0);
        } else {
            $date_fin_iteration->setTime(23, 59, 59);
            $date_fin_iteration->modify("+1 second");
        }
        $date_fin_iteration->modify("+2 hours");//on ajout deux heures pour prendre en compte un décalage dans la date de compteur (+1h35) dans l'algorithme plus bas
        

        $result = new PropelCollection();
        $date_compteur = clone $date_debut_iteration;
        $horaire_tab = EdtHorairesEtablissementPeer::retrieveAllEdtHorairesEtablissementArrayCopy();
        require_once(dirname(__FILE__)."/EdtHelper.php");
        foreach($abs_saisie_col as $saisie) {
            if ($date_compteur->format('U') < $saisie->getDebutAbs('U')) {
                $date_compteur = clone $saisie->getDebutAbs(null);
            }
            if ($date_compteur >= $date_fin_iteration) {
                break;
            }
            
            while ($date_compteur <= $saisie->getFinAbs(null) && $date_compteur < $date_fin_iteration) {
                //est-ce un jour de la semaine ouvert ?
                if (!EdtHelper::isJourneeOuverte($date_compteur)) {
                    //etab fermé on va passer au lendemain
                    $date_compteur->setTime(23, 59, 59);
                    $date_compteur->modify("+2 hours");
                    continue;
                } elseif (!EdtHelper::isHoraireOuvert($date_compteur)) {
                    $horaire = $horaire_tab[EdtHelper::$semaine_declaration[$date_compteur->format("w")]];
                    if ($date_compteur->format('Hi') < $horaire->getOuvertureHoraireEtablissement('Hi')) {
                        //c'est le matin, on règle sur l'heure d'ouverture
                        $date_compteur->setTime($horaire->getOuvertureHoraireEtablissement('H'), $horaire->getOuvertureHoraireEtablissement('i'));
                    } else {
                        //on est apres la fermeture, on va passer au lendemain
                        $date_compteur->setTime(23, 59, 59);
                        $date_compteur->modify("+2 hours");
                    }
                    continue;
                } elseif ($date_compteur < $saisie->getDebutAbs(null) && !EdtHelper::isHoraireOuvert($saisie->getDebutAbs(null))) {
                    $date_compteur->modify("+19 minutes");
                    continue;
                }

                if ($date_compteur->format('Hi') < $heure_demi_journee.$minute_demi_journee) {
                    $date_compteur->setTime(0, 0, 0);
                } else {
                    $date_compteur->setTime(12, 0, 0);
                }
                $date_compteur_suivante = clone $date_compteur;
                $date_compteur_suivante->modify("+15 hours");//en ajoutant 15 heure on est sur de passer a la demi-journee suivante
                if ($date_compteur_suivante->format('H') < 12) {
                    $date_compteur_suivante->setTime(0, 0, 0);
                } else {
                    $date_compteur_suivante->setTime($heure_demi_journee, $minute_demi_journee, 0);
                }
                
                if ($saisie->getDebutAbs(null) < $date_compteur_suivante && $saisie->getFinAbs(null) > $date_compteur) {
                    $result->append(clone $date_compteur);
                    //on ajoute 1h35
                    //pour eviter le cas ou on a une saisie par exemple sur 11h45 -> 13h et de la compter comme deux demi-journees
                    $date_compteur_suivante->modify("+1 hour");
                    $date_compteur_suivante->modify("+45 minutes");
                }
                
                $date_compteur = $date_compteur_suivante;
                $saisie->clearAllReferences();
            }
        }
        return $result;
    }
Ejemplo n.º 3
0
				}
			}
		}

		if (getSettingValue("abs2_saisie_prof_decale")=='y' || $utilisateur->getStatut() != "professeur") {
			$col = EdtSemaineQuery::create()->find();
			$semaineAff = new PropelCollection();
			//on va commencer la liste à la semaine 31 (milieu des vacances d'ete)
			for ($i = 0; $i < $col->count(); $i++) {
				$pos = ($i + 30) % $col->count();
				$semaine = $col[$pos];
				$semaineAff->append($col[$pos]);
			}
		} else {
			$semaineAff = new PropelCollection();
				$semaineAff->append($current_semaine);
		}

		if ($current_cours != null && $current_cours->getTypeSemaine() != '' && $current_cours->getTypeSemaine() != '0' && $current_semaine != null && $current_cours->getTypeSemaine() != $current_semaine->getTypeEdtSemaine()) {
			$erreurSemaine=TRUE;
			$current_cours = null;
			$current_groupe = null;
			$current_classe = null;
			$current_aid = null;
		}
	}
}

//**************** CLASSES *****************
if (getSettingValue("GepiAccesAbsTouteClasseCpe")=='yes' && $utilisateur->getStatut() == "cpe") {
    $classe_col = ClasseQuery::create()->orderByNom()->orderByNomComplet()->find();
Ejemplo n.º 4
0
}

//afichage des eleves
$eleve_col = new PropelCollection();
if ($type_selection == 'id_eleve') {
    $query = EleveQuery::create();
    if ($utilisateur->getStatut() != "cpe" || getSettingValue("GepiAccesAbsTouteClasseCpe")!='yes') {
	$query->filterByUtilisateurProfessionnel($utilisateur);
    }
    $eleve = $query->filterById($id_eleve)
            ->where('Eleve.DateSortie<?','0')
            ->orWhere('Eleve.DateSortie is NULL')
            ->orWhere('Eleve.DateSortie>?', $dt_date_absence_eleve_debut_saisir_eleve->format('U'))
            ->findOne();
    if ($eleve != null) {
	$eleve_col->append($eleve);
    }
} else if ($type_selection == 'nom_eleve') {
    $query = EleveQuery::create();
    if ($utilisateur->getStatut() != "cpe" || getSettingValue("GepiAccesAbsTouteClasseCpe")!='yes') {
	$query->filterByUtilisateurProfessionnel($utilisateur);
    }
    $eleve_col = $query->filterByNomOrPrenomLike($nom_eleve)
            ->where('Eleve.DateSortie<?','0')
            ->orWhere('Eleve.DateSortie is NULL')
            ->orWhere('Eleve.DateSortie>?', $dt_date_absence_eleve_debut_saisir_eleve->format('U'))
            ->limit(20)->find();
} elseif (isset($current_groupe) && $current_groupe != null) {
    $query = EleveQuery::create();
    $eleve_col = $query->useJEleveGroupeQuery()
                        ->filterByIdGroupe($current_groupe->getId())
 public function testAddClassmatesWithPropelCollection()
 {
     $john = new DBStudent();
     $john->setName('john');
     $jean = new DBStudent();
     $jean->setName('jean');
     $phil = new DBStudent();
     $phil->setName('phil');
     $john->setClassmates(array($jean, $phil));
     $john->save();
     $this->assertEquals(3, DBStudentQuery::create()->count());
     $this->assertTrue($john->hasClassmate($jean));
     $this->assertTrue($john->hasClassmate($phil));
     $this->assertTrue($phil->hasClassmate($john));
     $this->assertTrue($jean->hasClassmate($john));
     $this->assertEquals(2, count($john->getClassmates()));
     $henri = new DBStudent();
     $henri->setName('henri');
     $marco = new DBStudent();
     $marco->setName('marco');
     $coll = new PropelCollection();
     $coll->append($henri);
     $coll->append($marco);
     $john->addClassmates($coll);
     $john->save();
     $this->assertEquals(5, DBStudentQuery::create()->count());
     $this->assertTrue($john->hasClassmate($henri));
     $this->assertTrue($john->hasClassmate($marco));
     $this->assertTrue($marco->hasClassmate($john));
     $this->assertTrue($henri->hasClassmate($john));
     $this->assertEquals(4, count($john->getClassmates()));
 }
Ejemplo n.º 6
0
	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)));
        }
	}
     $clone->setDateEnvoi(null);
     $clone->setErreurMessageEnvoi(null);
     $clone->save();
     $_POST["id_notification"] = $clone->getId();
     $message_enregistrement .= '<span style="color:green">Nouvelle notification</span>';
     include "visu_notification.php";
     die;
 } elseif ($modif == 'duplication_par_responsable') {
     $responsablesToAdd = new PropelCollection();
     $responsables_informations = $notification->getAbsenceEleveTraitement()->getResponsablesInformationsSaisies();
     foreach ($responsables_informations as $responsable_information) {
         $responsable = $responsable_information->getResponsableEleve();
         if ($responsable == null || $notification->getResponsableEleves()->contains($responsable) || $responsable_information->getNiveauResponsabilite() == '0') {
             continue;
         }
         $responsablesToAdd->append($responsable);
     }
     foreach ($responsablesToAdd as $responsableToAdd) {
         $clone = $notification->copy();
         //no deep copy
         $clone->save();
         $id = $clone->getId();
         //this is done to avoid a bug in deepcopy
         $notification->copyInto($clone, true);
         // deep copy
         $clone->setId($id);
         $clone->setNew(false);
         $clone->setEmail($responsableToAdd->getMel());
         $clone->setTelephone($responsableToAdd->getTelPort());
         $clone->setAdresseId($responsableToAdd->getAdresseId());
         $clone->save();
Ejemplo n.º 8
0
			$recap = $notif->getId().', ';
			foreach ($notif->getResponsableEleves() as $responsable) {
				$recap .= $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.$responsable->getPrenom();
				if (!$notif->getResponsableEleves()->isLast()) {
				$recap .=  ' ';
				}
			}
			$courrier_recap_col->append($recap);

			//on met un code d'erreur au cas ou la generation se fait mal
			if ($notif->getStatutEnvoi() == AbsenceEleveNotificationPeer::STATUT_ENVOI_ETAT_INITIAL
				|| $notif->getStatutEnvoi() == AbsenceEleveNotificationPeer::STATUT_ENVOI_PRET_A_ENVOYER) {
				$notif->setStatutEnvoi(AbsenceEleveNotificationPeer::STATUT_ENVOI_ECHEC);
				$notif->setErreurMessageEnvoi('Echec de l\'impression par lot');
				$notif->save();
				$courrier_nouvellement_envoyés_col->append($notif);
			} else {
				$notif->setUpdatedAt('now');
				$notif->save();
			}
		}

		//on imprime le global
		$TBS->MergeBlock('notifications',$tableNotifications);

		$TBS->MergeField('nb_impressions',count($tableNotifications));
		$TBS->MergeBlock('courrier_recap_col',$courrier_recap_col);
		// Output as a download file (some automatic fields are merged here)
		//on change le statut des notifications
		foreach($courrier_nouvellement_envoyés_col as $notif) {
		$notif->setDateEnvoi('now');
Ejemplo n.º 9
0
   /**
   * Merge une notification avec son modele
   *
   * @param AbsenceEleveNotification $notification
   * @param String $modele chemin du modele tbs
   * @return clsTinyButStrong $TBS deroulante des types d'absences
   */
  public static function MergeNotification($notification, $modele){
    //on charge le modele et on merge les données de l'établissement
    $TBS=self::MergeInfosEtab($modele);
    $TBS->MergeField('notif_id',$notification->getId());
    //on récupère la liste des noms d'eleves
    $eleve_col = new PropelCollection();
    if ($notification->getAbsenceEleveTraitement() != null) {
	foreach ($notification->getAbsenceEleveTraitement()->getAbsenceEleveSaisies() as $saisie) {
	    $eleve_col->add($saisie->getEleve());
	}
    }
    //merge des saisies pour modèles du type 1.5.3
    $TBS->MergeBlock('el_col',$eleve_col);

    foreach ($eleve_col as $eleve) {
            $saisies_string_col = new PropelCollection();
            $saisies_col = AbsenceEleveSaisieQuery::create()->filterByEleveId($eleve->getId())
                    ->useJTraitementSaisieEleveQuery()
                    ->filterByATraitementId($notification->getAbsenceEleveTraitement()->getId())->endUse()
                    ->orderBy("DebutAbs", Criteria::ASC)
                    ->find();
            foreach ($saisies_col as $saisie) {

                $str = $saisie->getDateDescription();
                if($saisie->getGroupeNameAvecClasses()!=''){
                    $str.= ', cours de '.$saisie->getGroupeNameAvecClasses();
                }                
                $saisies_string_col->append($str);
                
            }
            $TBS->MergeBlock('saisies_string_eleve_id_'.$eleve->getId(), $saisies_string_col);
    }

    $heure_demi_journee = 11;
    $minute_demi_journee = 50;
    if (getSettingValue("abs2_heure_demi_journee") != null) {
        try {
    	$dt_demi_journee = new DateTime(getSettingValue("abs2_heure_demi_journee"));
    	$heure_demi_journee = $dt_demi_journee->format('H');
    	$minute_demi_journee = $dt_demi_journee->format('i');
        } catch (Exception $x) {
        }
    }
    $temps_demi_journee = $heure_demi_journee.$minute_demi_journee;

    foreach($eleve_col as $eleve) {
	$demi_journee_string_col = new PropelCollection();array ();
        $abs_col = AbsenceEleveSaisieQuery::create()->filterByEleve($eleve)
		->useJTraitementSaisieEleveQuery()
		->filterByATraitementId($notification->getAbsenceEleveTraitement()->getId())->endUse()
		->orderBy("DebutAbs", Criteria::ASC)
		->find();
	require_once("helpers/AbsencesEleveSaisieHelper.php");
	$demi_j = AbsencesEleveSaisieHelper::compte_demi_journee($abs_col);
	foreach($demi_j as $date) {
	    $str = 'Le ';
	    $str .= (strftime("%a %d/%m/%Y", $date->format('U')));
	    if ($date->format('H') < 12) {
		$next_date = $demi_j->getNext();
		if ($next_date != null && $next_date->format('Y-m-d') == $date->format('Y-m-d')) {
		    $str .= ' la journée';
		} else {
		    $str .= ' le matin';
		    //on recule le pointeur car on l'a avancé avec $demi_j->getNext()
		    $demi_j->getPrevious();
		}
	    } else {
		$str .= ' l\'après midi';
	    }
	    $demi_journee_string_col->append($str);
	}
	//var_dump($demi_journee_string_col);die;
	//if (count($demi_journee_string_col) == 0) die;
	$TBS->MergeBlock('demi_j_string_eleve_id_'.$eleve->getId(), $demi_journee_string_col);
    }

    if ($notification->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_COURRIER) {
	//on va mettre les champs dans des variables simple
	//on fait un petit traitement pour bien formatter ça si on a un ou deux responsables, avec le même nom de famille ou pas.
	if ($notification->getAdresse() != null && $notification->getResponsableEleves()->count() == 1) {
	    $responsable = $notification->getResponsableEleves()->getFirst();
	    $destinataire = $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.strtoupper($responsable->getPrenom());
	} elseif ($notification->getAdresse() != null&& $notification->getResponsableEleves()->count() == 2) {
	    $responsable1 = $notification->getResponsableEleves()->getFirst();
	    $responsable2 = $notification->getResponsableEleves()->getNext();
	    if (strtoupper($responsable1->getNom()) == strtoupper($responsable2->getNom())) {
		$destinataire = $responsable1->getCivilite().' et '.$responsable2->getCivilite().' '.strtoupper($responsable1->getNom());
	    } else {
		$destinataire = $responsable1->getCivilite().' '.strtoupper($responsable1->getNom());
		$destinataire .= ' et '.$responsable2->getCivilite().' '.strtoupper($responsable2->getNom());
	    }
	} else {
	    $destinataire = '';
	}
	$TBS->MergeField('destinataire',$destinataire);

	$adr = $notification->getAdresse();
	if ($adr == null) {
	    $adr = new Adresse();
	}
	$TBS->MergeField('adr',$adr);	

    } else if ($notification->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_EMAIL) {
	$destinataire = '';
	foreach ($notification->getResponsableEleves() as $responsable) {
	    $destinataire .= $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.strtoupper($responsable->getPrenom()).' ';
	}
	$TBS->MergeField('destinataire',$destinataire);
    } else if ($notification->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_SMS) {
	$destinataire = '';
	foreach ($notification->getResponsableEleves() as $responsable) {
	    $destinataire .= $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.strtoupper($responsable->getPrenom()).' ';
	}
	$TBS->MergeField('destinataire',$destinataire);
    }

    // $TBS->Show(TBS_NOTHING);
    return $TBS;
  }
Ejemplo n.º 10
0
$dt_debut->setTime(0, 0, 0);
$dt_fin = clone $dt_date_absence_eleve;
$dt_fin->setTime(23, 59, 59);
//on récupere les saisies car avant puis on va filtrer avec les ids car filterManquementObligationPresence bug un peu avec les requetes imbriquées
$saisie_query = AbsenceEleveSaisieQuery::create()->filterByPlageTemps($dt_debut, $dt_fin)->setFormatter(ModelCriteria::FORMAT_ARRAY);
if (!isFiltreRechercheParam('filter_manqement_obligation') || getFiltreRechercheParam('filter_manqement_obligation') != 'n') {
    //par défaut on filtre les manquement à l'obligation de présence
    $saisie_query->filterByManquementObligationPresence();
}
$saisie_col = $saisie_query->find();
$query = EleveQuery::create()->orderBy('Nom', Criteria::ASC)->orderBy('Prenom', Criteria::ASC)->useAbsenceEleveSaisieQuery()->filterById($saisie_col->toKeyValue('Id', 'Id'))->endUse();
if ($utilisateur->getStatut() != "cpe" || getSettingValue("GepiAccesAbsTouteClasseCpe") != 'yes') {
    $query->filterByUtilisateurProfessionnel($utilisateur);
}
if ($type_selection == 'id_eleve') {
    $eleve_col->append($query->findPk($id_eleve));
} else {
    if ($type_selection == 'nom_eleve') {
        $query->filterByNomOrPrenomLike($nom_eleve);
    } elseif ($current_groupe != null) {
        $query->useJEleveGroupeQuery()->filterByIdGroupe($current_groupe->getId())->enduse();
    } elseif ($current_aid != null) {
        $query->useJAidElevesQuery()->filterByIdAid($current_aid->getId())->enduse();
    } elseif ($current_classe != null) {
        $query->useJEleveClasseQuery()->filterByIdClasse($current_classe->getId())->enduse();
    } else {
        //rien à faire
    }
}
if ($type_selection != 'id_eleve' && $type_selection != 'nom_eleve') {
    //on filtre
Ejemplo n.º 11
0
	foreach($demi_j as $date) {
		$str = 'Le ';
		$str .= (strftime("%a %d/%m/%Y", $date->format('U')));
		if ($date->format('H') < 12) {
		$next_date = $demi_j->getNext();
		if ($next_date != null && $next_date->format('Y-m-d') == $date->format('Y-m-d')) {
			$str .= ' la journée';
		} else {
			$str .= ' le matin';
			//on recule le pointeur car on l'a avancé avec $demi_j->getNext()
			$demi_j->getPrevious();
		}
		} else {
		$str .= ' l\'après midi';
		}
		$demi_journee_string_col->append($str);
	}
	$notification['demi_j_string'] = $demi_journee_string_col;
	
	
	
	
	

}



	
	
    //on imprime le global
Ejemplo n.º 12
0
	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'));
	}
Ejemplo n.º 13
0
  	/**
	 *
	 * Retourne une collection contenant des saisies comptée comme retard pour le décompte officiel
	 *
	 * @param      mixed $periode numeric or PeriodeNote value.
	 *
	 * @return PropelCollection AbsenceEleveSaisie[]
	 */
	public function getRetards($date_debut=null, $date_fin = null) {

            if (($date_fin != null) && ($this->getDateSortie() != null && $this->getDateSortie('U') < $date_fin->format('U'))) {
                $date_fin = $this->getDateSortie(null);
            }

            $abs_saisie_col = $this->getAbsenceEleveSaisiesParDate($date_debut, $date_fin);
            if ($abs_saisie_col->isEmpty()) {
                return new PropelCollection();
            }

            $result = new PropelCollection();
            $abs_saisie_englobante = clone $abs_saisie_col;
            //on va faire le décompte officiel des retard
            foreach ($abs_saisie_col as $saisie) {
                if ($saisie->getEleveId() != $this->getId()) {
                    continue;
                }
                if (!$saisie->getRetard() ||
                    !$saisie->getRetardEnglobante() ||
                    !$saisie->getManquementObligationPresence() ||
                    !$saisie->getManquementObligationPresenceEnglobante())
                {
                    //on retire la saisie contrée de la liste de test des saisise possiblement englobante pour optimiser
                    $abs_saisie_englobante->remove($abs_saisie_englobante->search($saisie));
                    continue;
                }

                //on va regarder si il y a un retard plus global, pour n'en compter qu'un seul en non pas deux
                $contra = false;
                foreach ($abs_saisie_englobante as $saisie_contra) {
                    if ($saisie_contra->getEleveId() != $this->getId()) {
                        continue;
                    }
                    if ($saisie_contra->getId() != $saisie->getId()
                            && $saisie->getDebutAbs('U') >= $saisie_contra->getDebutAbs('U')
                            && $saisie->getFinAbs('U') <= $saisie_contra->getFinAbs('U')
                            && !$saisie_contra->getManquementObligationPresenceSpecifie_NON_PRECISE())
                    {
                        //on a une saisie plus large
                        $contra = true;
                        break;
                    }
                }
                if (!$contra) {
                    $result->append($saisie);
                } else {
                    //on retire la saisie contrée de la liste de test des saisise possiblement englobante pour optimiser
                    $abs_saisie_englobante->remove($abs_saisie_englobante->search($saisie));
                }
            }

            //on va enlever les retards qui sont sur des périodes non ouvertes de l'établissement
            require_once(dirname(__FILE__)."/../../../helpers/EdtHelper.php");
            $result_final = new PropelCollection();
            foreach ($result as $saisie) {
                if (EdtHelper::isJourneeOuverte($saisie->getDebutAbs(null))
                    && EdtHelper::isHoraireOuvert($saisie->getDebutAbs(null))) {
                    $result_final->append($saisie);
                }
            }
	    return $result_final;
	}
Ejemplo n.º 14
0
		foreach ($edt_cours_col as $edt_cours) {
			if ($edt_cours->getEdtCreneau() == NULL) {
				//on affiche pas le cours si il n'est associé avec aucun creneau
				continue;
			}
			if (getSettingValue("abs2_saisie_prof_decale") != 'y' && $utilisateur->getStatut() == "professeur") {
				if ($edt_cours->getJourSemaineNumeric() != date('w')) {
				//on affiche pas ce cours car il n'est pas aujourd'hui
				continue;
				}
				if ($edt_cours->getTypeSemaine() != '' && $edt_cours->getTypeSemaine() != '0' && $edt_cours->getTypeSemaine() != $current_semaine->getTypeEdtSemaine()) {
				//on affiche pas ce cours car il n'est pas aujourd'hui
				continue;
				}
			}
			$edt_cours_aff->append($edt_cours);
		}
		foreach ($edt_cours_col as $edt_cours) {
			if ($edt_cours->getEdtCreneau() == NULL) {
				//on affiche pas le cours si il n'est associé avec aucun creneau
				continue;
			}
			if (getSettingValue("abs2_saisie_prof_decale") != 'y' && $utilisateur->getStatut() == "professeur") {
				if ($edt_cours->getJourSemaineNumeric() != date('w')) {
				//on affiche pas ce cours car il n'est pas aujourd'hui
				continue;
				}
				if ($edt_cours->getTypeSemaine() != '' && $edt_cours->getTypeSemaine() != '0' && $edt_cours->getTypeSemaine() != $current_semaine->getTypeEdtSemaine()) {
				//on affiche pas ce cours car il n'est pas aujourd'hui
				continue;
				}