/** * 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; }
//$responsable = new ResponsableEleve(); echo $responsable->getCivilite().' '.strtoupper($responsable->getNom()).' '.$responsable->getPrenom(); if (!$notif->getResponsableEleves()->isLast()) { echo ', '; } } echo '</td>'; echo '<td>'; if ($notif->getAdresse() != null) { echo $notif->getAdresse()->getDescriptionSurUneLigne(); } echo '</td>'; echo '<td>Statut '.$notif->getStatutEnvoi().'</td>'; echo '<td>'.$notif->getDateEnvoi('d/m/Y H:i').'</td>'; echo '<td>'; if ($notif->getAbsenceEleveTraitement() != null) { echo 'Traitement '.$notif->getAbsenceEleveTraitement()->getDescription(); } echo '</td>'; echo '</tr>'; } echo '</table></br></br>'; } if ($notif_courrier_a_envoyer_col->isEmpty() && !$notif_courrier_fini->isEmpty()) { echo '<a dojoType="dijit.form.Button" onclick="window.open(\'generer_notifications_par_lot.php?envoyer_courrier=true\'); var loc = \'window.location = \\\'generer_notifications_par_lot.php\\\'\'; setTimeout(loc, 3000);" href="generer_notifications_par_lot.php?envoyer_courrier=true">Imprimer les courriers duplicata</a>'; echo '<br/><br/>'; } elseif (!$notif_courrier_a_envoyer_col->isEmpty() || !$notif_courrier_fini->isEmpty()) { echo '<a dojoType="dijit.form.Button" onclick="window.open(\'generer_notifications_par_lot.php?envoyer_courrier=true\'); var loc = \'window.location = \\\'generer_notifications_par_lot.php\\\'\'; setTimeout(loc, 3000);" href="generer_notifications_par_lot.php?envoyer_courrier=true">Imprimer tous les courriers</a>'; echo '<br/><br/>'; }