Beispiel #1
0
    /**
    * Test that PropelCollection->add() prevents duplicates of objects strictly identical
    *
    */
   public function testAdd()
    {
        Propel::disableInstancePooling();
        $eleve1 = EleveQuery::create()->findOneByLogin('Florence Michu');
        $eleve1->setNom('test_different');
        $eleve_col = new PropelCollection();
        $eleve_col->add($eleve1);
        $eleve1idem = EleveQuery::create()->findOneByLogin('Florence Michu');
        $this->assertFalse($eleve_col->contains($eleve1idem));
        $eleve_col->add($eleve1idem);
        $this->assertEquals(2, count($eleve_col));
        Propel::enableInstancePooling();


        $eleve1 = EleveQuery::create()->findOneByLogin('Florence Michu');
        $eleve_col = new PropelCollection();
        $eleve_col->add($eleve1);
        $eleve_col->add($eleve1);
        $this->assertEquals(1, count($eleve_col));
    }
	/**
	 *
	 * Renvoi une description intelligible du traitement
	 *
	 * @return     String description
	 *
	 */
	public function getDescription() {
	    if (!isset($description) || $description === null) {
		$desc = 'n° '.$this->getId();
		$desc .= ' créé le ';
		$desc .= strftime("%a %d/%m/%Y", $this->getUpdatedAt('U'));
		$eleve_col = new PropelCollection();
		foreach ($this->getAbsenceEleveSaisies() as $abs_saisie) {
		    if ($abs_saisie->getEleve() != null) {
			$eleve_col->add($abs_saisie->getEleve());
		    }
		}
		foreach ($eleve_col as $eleve) {
		    if ($eleve_col->isFirst()) {
			$desc .= '; ';
		    }
		    $desc .= $eleve->getNom().' '.$eleve->getPrenom();
		    if (!$eleve_col->isLast()) {
			$desc .= ', ';
		    }
		}
		if ($this->getAbsenceEleveType() != null) {
		    $desc .= "; type : ".$this->getAbsenceEleveType()->getNom();
		}
		if ($this->getAbsenceEleveMotif() != null) {
		    $desc .= "; motif : ".$this->getAbsenceEleveMotif()->getNom();
		}
		if ($this->getAbsenceEleveJustification() != null) {
		    $desc .= "; justification : ".$this->getAbsenceEleveJustification()->getNom();
		}
		$notif = false;
		foreach ($this->getAbsenceEleveNotifications() as $notification) {
		    if ($notification->getStatutEnvoi() == AbsenceEleveNotificationPeer::STATUT_ENVOI_SUCCES
			    || $notification->getStatutEnvoi() == AbsenceEleveNotificationPeer::STATUT_ENVOI_SUCCES_AVEC_ACCUSE_DE_RECEPTION) {
			$notif = true;
			break;
		    }
		}
		if ($notif) {
		    $desc .= "; Notifié";
		}
		if ($this->getCommentaire() != null && $this->getCommentaire() != '') {
		    $desc .= "; Commentaire : ".$this->getCommentaire();
		}
		$description = $desc;
	    }
	    return $description;
	}
Beispiel #3
0
	}	
    }

    if ($notification->getModifiable()) {
	echo '<div>';
	echo '<form method="post" action="enregistrement_modif_notification.php">';
    echo '<input type="hidden" name="menu" value="'.$menu.'"/>';
	echo '<p>';
	echo '<input type="hidden" name="id_notification" value="'.$notification->getPrimaryKey().'"/>';
	echo '<input type="hidden" name="modif" value="adresse"/>';
	echo ("<select name=\"adr_id\" onchange='submit()'>");
	$adresse_col = new PropelCollection();
	if ($notification->getAbsenceEleveTraitement() != null) {
	    foreach ($notification->getAbsenceEleveTraitement()->getResponsablesInformationsSaisies() as $responsable_information) {
		if ($responsable_information->getResponsableEleve() != null && $responsable_information->getResponsableEleve()->getAdresse() != null) {
		     $adresse_col->add($responsable_information->getResponsableEleve()->getAdresse());
		}
	    }
	}
	foreach ($adresse_col as $responsable_addresse) {
	    //$responsable_addresse = new Adresse();
	    echo '<option value="'.$responsable_addresse->getPrimaryKey().'"';
	    if ($notification->getAdresse() != null &&
		    $responsable_addresse->getPrimaryKey() == $notification->getAdresse()->getPrimaryKey()) {
		echo " selected='selected' ";
	    }
	    echo ">";
	    if ($responsable_addresse->getAdr1() != null && $responsable_addresse->getAdr1() != '') {
		echo $responsable_addresse->getAdr1();
		echo ' ';
	    }
Beispiel #4
0
/**
 * Récupère les données d'un élève à afficher
 * @param objet $eleve Un élève issu de getEleves()
 * @param date $date_debut
 * @param date $date_fin
 * @param objet $justifie_col Collection Propel avec les justifications
 * @param bool $donneeBrut
 * @return array Une ligne du tableau à afficher
 * @see getEleves()
 */
function traiteEleve($eleve,$date_debut, $date_fin, $justifie_col, $donneeBrut, $erreur=FALSE) {
  $eleve_id = $eleve->getId();
  $donnees= array();
  $donnees[$eleve_id] = array();
  
  $propel_eleve = EleveQuery::create()->filterById($eleve_id)->findOne();
  $eleveNbAbs['demi_journees'] = $propel_eleve->getDemiJourneesAbsence($date_debut, $date_fin)->count();
  $eleveNbAbs['retards'] = $propel_eleve->getRetards($date_debut, $date_fin)->count();
	
	if ($eleveNbAbs['demi_journees'] > 0 || $eleveNbAbs['retards'] > 0 ) {
	  $eleveNbAbs['non_justifiees'] = $propel_eleve->getDemiJourneesNonJustifieesAbsence($date_debut, $date_fin)->count();
	  $eleveNbAbs['justifiees'] = $eleveNbAbs['demi_journees'] - $eleveNbAbs['non_justifiees']; 
	  $donnees[$eleve_id]['nom'] = $eleve->getNom();
	  $donnees[$eleve_id]['prenom'] = $eleve->getPrenom();
	  $donnees[$eleve_id]['classe'] = $eleve->getClasse();
	  $donnees[$eleve_id]['classe'] = $eleve->getClasseNom();        
	  $donnees[$eleve_id]['nbre_lignes_total'] = 0;
	  $donnees[$eleve_id]['demi_journees'] = $eleveNbAbs['demi_journees'];
	  $donnees[$eleve_id]['justifiees'] = $eleveNbAbs['justifiees'];
	  $donnees[$eleve_id]['non_justifiees'] = $eleveNbAbs['non_justifiees'];
	  $donnees[$eleve_id]['retards'] = $eleveNbAbs['retards'];
	  //Récupérer le décompte des traitements pour chaque élève	  
	  $totalDemi=0;
	foreach ($justifie_col as $justifie) {
	  // Décompte en données brutes 
		if ($donneeBrut == TRUE) {
		  $propel_traitEleve = AbsenceEleveTraitementQuery::create()->filterByAJustificationId($justifie->getid())
			->useJTraitementSaisieEleveQuery()
			  ->useAbsenceEleveSaisieQuery()
				->filterByEleveId($eleve_id)
				->filterByPlageTemps($date_debut,$date_fin )
			  ->endUse()
			->endUse() ;
		  $traiteEleve_col = $propel_traitEleve;
		  $donnees[$eleve_id]['traitement'][] = $traiteEleve_col->distinct()->count();
		} else {
		  // Décompte en 1/2 journées
                    $abs_saisie_col_filtrees = $eleve->getAbsenceEleveSaisiesDecompteDemiJournees($date_debut, $date_fin);
                    $justif_collection = new PropelCollection();
                    foreach ($abs_saisie_col_filtrees as $saisie) {
                        foreach ($saisie->getAbsenceEleveTraitements() as $traitement) {
                            if ($traitement->getAJustificationId() == $justifie->getid()) {
                                $justif_collection->add($saisie);
                            }
                        }
                    }

                    require_once(dirname(__FILE__)."/../orm//helpers/AbsencesEleveSaisieHelper.php");
                    $dm = AbsencesEleveSaisieHelper::compte_demi_journee($justif_collection, $date_debut, $date_fin);
                    $donnees[$eleve_id]['traitement'][] = $dm->count();
                    $totalDemi += $dm->count();
		}
	  }
	  $donnees[$eleve_id]['totalDemi']=$totalDemi;
	}
	unset ($eleveNbAbs, $traiteEleve_col, $propel_eleve, $propel_traitEleveDemi, $traiteEleveDemi, $traiteEleveDemi_col, $propel_traitEleve);
	if ($erreur && isset ($donnees[$eleve_id]['justifiees']) && ($donnees[$eleve_id]['justifiees']==$donnees[$eleve_id]['totalDemi'])) {
	  $donnees[$eleve_id] = array();
	}
	
	return $donnees;
}
   /**
   * 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;
  }
	echo '</tr>';
    }
    echo '</table></br>';
    echo '<a dojoType="dijit.form.Button" onclick="location.href=\'generer_notifications_par_lot.php?envoyer_email=true\';" href="generer_notifications_par_lot.php?envoyer_email=true">Envoyer les emails</a>';
    echo '<br/><br/>';
}

//
//on affiche les notifications de type courrier
//
$notif_courrier_a_envoyer_col = new PropelCollection();
$notif_courrier_fini = new PropelCollection();
foreach($notifications_col as $notif) {
    if ($notif->getTypeNotification() == AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_COURRIER) {
	if ($notif->getStatutEnvoi() == AbsenceEleveNotificationPeer::STATUT_ENVOI_ETAT_INITIAL || $notif->getStatutEnvoi() == AbsenceEleveNotificationPeer::STATUT_ENVOI_PRET_A_ENVOYER) {
	    $notif_courrier_a_envoyer_col->add($notif);
	} else {
	    $notif_courrier_fini->add($notif);
	}
    }
}
if (!$notif_courrier_fini->isEmpty()) {$notif = new AbsenceEleveNotification();
    echo 'Courriers duplicata';
    echo '<table id="table_liste_absents" style="border-spacing:0px;">';
    //en tete commentaire
    echo '</tr>';
    echo '<th>id</th>';
    echo '<th></th>';
    echo '<th></th>';
    echo '<th>responsables</th>';
    echo '<th>adresse</th>';
<?php
$eleve_col = new PropelCollection();
$elevesLogin=array();
$tableNotifications=array();

foreach ($notifications_col as $notification) {
			if ($notification->getTypeNotification() != AbsenceEleveNotificationPeer::TYPE_NOTIFICATION_COURRIER) {
				continue;
			}
	
    if ($notification->getAbsenceEleveTraitement() != null) {
		foreach ($notification->getAbsenceEleveTraitement()->getAbsenceEleveSaisies() as $saisie) {
			$eleve_col->add ($saisie->getEleve());
			
			if (!isset ($tableNotifications[$saisie->getEleve()->getLogin()]['notif_id_col'])) {
				// première fois qu'on trouve un élève
				$tableNotifications[$saisie->getEleve()->getLogin()]['notif_id_col'] = new PropelCollection();
				$tableNotifications[$saisie->getEleve()->getLogin()]['notif_col'] = new PropelCollection();
				$tableNotifications[$saisie->getEleve()->getLogin()]['notif_id']='';
				$tableNotifications[$saisie->getEleve()->getLogin()]['eleve'] = new PropelCollection();
				$tableNotifications[$saisie->getEleve()->getLogin()]['saisies'] = new PropelCollection();
				
				// On récupère les infos de l'élève
				$tableNotifications[$saisie->getEleve()->getLogin()]['getNom'] = $saisie->getEleve()->getNom();
				$tableNotifications[$saisie->getEleve()->getLogin()]['getPrenom'] = $saisie->getEleve()->getPrenom();
				$tableNotifications[$saisie->getEleve()->getLogin()]['getClasseNomComplet'] = $saisie->getEleve()->getClasseNomComplet();
				$tableNotifications[$saisie->getEleve()->getLogin()]['getId'] = $saisie->getEleve()->getId();
				$tableNotifications[$saisie->getEleve()->getLogin()]['responsable'] = $notification->getResponsableEleves();
						
				//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.
Beispiel #8
0
	/**
	 *
	 * filtre une collection de saisie pour ne retenir que les saisies englobante
	 *
	 * @return     AbsenceEleveLieu
	 *
	 */
	public function filterAbsenceEleveSaisiesEnglobantes(PropelCollection $col) {
            $result = new PropelCollection();
            foreach ($col as $saisie) {
                if ($saisie->getEleveId() == $this->getEleveId() &&
                    $saisie->getDebutAbs(null) <= $this->getDebutAbs(null) &&
                    $saisie->getFinAbs(null) >= $this->getFinAbs(null)) {
                    $result->add($saisie);
                }
            }
            return $result;
        }