Loading module/Application/view/default/reponse.phtml +11 −8 Original line number Diff line number Diff line Loading @@ -2,23 +2,26 @@ /** * @var string $reponse * @var string $succes * @var string $echec * @var string $success * @var string $probleme */ ?> <?php if (isset($reponse)) : ?> <?php echo $reponse; ?> <?php endif; ?> <?php if(isset($succes)) : ?> <div class="alert alert-success"> <?php echo $succes; ?> <?php if (isset($success)) : ?> <div class="alert alert-success text-success"> <span class="icon icon-checked"></span> <?php echo $success; ?> </div> <?php endif; ?> <?php if(isset($echec)) : ?> <div class="alert alert-danger"> <?php echo $echec; ?> <?php if (isset($error)) : ?> <div class="alert alert-danger text-danger"> <span class="icon icon-unchecked"></span> <?php echo $error; ?> </div> <?php endif; ?> module/Atelier/config/merged/session.config.php +11 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ return [ 'cloturer', 'reouvrir', 'changer-etat', 'notifier-inscrit', ], 'privileges' => [ SessionPrivileges::SESSION_GERER_ETAT, Loading Loading @@ -402,6 +403,16 @@ return [ ], ], ], 'notifier-inscrit' => [ 'type' => Segment::class, 'options' => [ 'route' => '/notifier-inscrit/:session', 'defaults' => [ /** @see SessionController::notifierInscritAction() */ 'action' => 'notifier-inscrit', ], ], ], ], ], ], Loading module/Atelier/config/module.config.php +6 −0 Original line number Diff line number Diff line <?php use Atelier\Form\Notification\NotificationForm; use Atelier\Form\Notification\NotificationFormFactory; use Atelier\Form\Notification\NotificationHydrator; use Atelier\Form\Notification\NotificationHydratorFactory; use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Atelier\Form\Justification\JustificationForm; Loading Loading @@ -55,11 +59,13 @@ return array( 'form_elements' => [ 'factories' => [ JustificationForm::class => JustificationFormFactory::class, NotificationForm::class => NotificationFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ JustificationHydrator::class => JustificationHydratorFactory::class, NotificationHydrator::class => NotificationHydratorFactory::class, ], ], 'controllers' => [ Loading module/Atelier/src/Controller/SessionController.php +68 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Atelier\Controller; use Atelier\Form\Notification\NotificationFormAwareTrait; use Atelier\Service\Groupe\GroupeServiceAwareTrait; use Etudiant\Service\Etudiant\EtudiantServiceAwareTrait; use Atelier\Entity\Db\Inscription; Loading Loading @@ -68,6 +69,7 @@ class SessionController extends AbstractActionController use UserServiceAwareTrait; use InscriptionFormAwareTrait; use JustificationFormAwareTrait; use NotificationFormAwareTrait; use SelectionnerIntervenantFormAwareTrait; use SessionFormAwareTrait; use VilleServiceAwareTrait; Loading Loading @@ -491,6 +493,72 @@ class SessionController extends AbstractActionController return $vm; } public function notifierInscritAction(): ViewModel { $session = $this->getSessionService()->getRequestedSession($this); $form = $this->getNotificationForm(); $form->setAttribute('action', $this->url()->fromRoute('atelier/session/notifier-inscrit', ['session' => $session->getId()], [], true)); $form->bind($session); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $inscriptions = match ($data['liste']) { Inscription::PRINCIPALE => $session->getListePrincipale(), Inscription::COMPLEMENTAIRE => $session->getListeComplementaire(), 'tous' => $session->getListeValide(), default => [], }; $sujet = trim($data['sujet']); $corps = trim($data['corps']); foreach ($inscriptions as $inscription) { $adresse = $inscription->getEtudiant()->getEmail(); $mails[$inscription->getEtudiant()->getDenomination()] = ($adresse)?$this->getMailService()->sendMail($adresse, $sujet, $corps):null; if ($mails[$inscription->getEtudiant()->getDenomination()]) { $mails[$inscription->getEtudiant()->getDenomination()]->setMotsClefs([$session->generateTag(), $inscription->generateTag(), 'Notification interne']); $this->getMailService()->update($mails[$inscription->getEtudiant()->getDenomination()]); //$session->addMail($mails[$inscription->getEtudiant()->getDenomination()]); } } $this->getSessionService()->update($session); $success = []; $probleme = []; foreach ($mails as $individu => $mail) { if ($mail === null) $probleme[] = $individu; else $success[] = $individu; } if (!empty($success)) { $successTexte = " Les stagiaires ont été notifié·es (".count($success)." courrier·s envoyé·s)."; } if (!empty($probleme)) { $problemeTexte = "L'opération n'a pas pu être faite pour les inscriptions de : <ul>"; foreach ($probleme as $individu) $problemeTexte .= "<li>" . $individu . "</li>"; $problemeTexte .= "</ul>"; } $vm = new ViewModel([ 'title' => "Notification des inscrits", 'reponse' => "Opération effectuée", 'success' => $successTexte??null, 'error' => $problemeTexte??null, ]); $vm->setTemplate('default/reponse'); return $vm; } } $vm = new ViewModel([ 'title' => "Notification des inscrits", 'form' => $form, ]); $vm->setTemplate('default/default-form'); return $vm; } /** Enquete *******************************************************************************************************/ public function enqueteAction() : ViewModel Loading module/Atelier/src/Controller/SessionControllerFactory.php +4 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Atelier\Controller; use Atelier\Form\Notification\NotificationForm; use Atelier\Service\Groupe\GroupeService; use Etudiant\Service\Etudiant\EtudiantService; use Atelier\Form\Inscription\InscriptionForm; Loading Loading @@ -70,6 +71,7 @@ class SessionControllerFactory * * @var InscriptionForm $inscriptionForm * @var JustificationFormAwareTrait $justificationForm * @var NotificationForm $notificationForm * @var SelectionnerIntervenantForm $selectionnerIntervenantForm * @var SessionForm $sessionForm */ Loading Loading @@ -97,6 +99,7 @@ class SessionControllerFactory $inscriptionForm = $container->get('FormElementManager')->get(InscriptionForm::class); $justificationForm = $container->get('FormElementManager')->get(JustificationForm::class); $notificationForm = $container->get('FormElementManager')->get(NotificationForm::class); $selectionnerIntervenantForm = $container->get('FormElementManager')->get(SelectionnerIntervenantForm::class); $sessionForm = $container->get('FormElementManager')->get(SessionForm::class); Loading Loading @@ -124,6 +127,7 @@ class SessionControllerFactory $controller->setInscriptionForm($inscriptionForm); $controller->setJustificationForm($justificationForm); $controller->setNotificationForm($notificationForm); $controller->setSelectionnerIntervenantForm($selectionnerIntervenantForm); $controller->setSessionForm($sessionForm); Loading Loading
module/Application/view/default/reponse.phtml +11 −8 Original line number Diff line number Diff line Loading @@ -2,23 +2,26 @@ /** * @var string $reponse * @var string $succes * @var string $echec * @var string $success * @var string $probleme */ ?> <?php if (isset($reponse)) : ?> <?php echo $reponse; ?> <?php endif; ?> <?php if(isset($succes)) : ?> <div class="alert alert-success"> <?php echo $succes; ?> <?php if (isset($success)) : ?> <div class="alert alert-success text-success"> <span class="icon icon-checked"></span> <?php echo $success; ?> </div> <?php endif; ?> <?php if(isset($echec)) : ?> <div class="alert alert-danger"> <?php echo $echec; ?> <?php if (isset($error)) : ?> <div class="alert alert-danger text-danger"> <span class="icon icon-unchecked"></span> <?php echo $error; ?> </div> <?php endif; ?>
module/Atelier/config/merged/session.config.php +11 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,7 @@ return [ 'cloturer', 'reouvrir', 'changer-etat', 'notifier-inscrit', ], 'privileges' => [ SessionPrivileges::SESSION_GERER_ETAT, Loading Loading @@ -402,6 +403,16 @@ return [ ], ], ], 'notifier-inscrit' => [ 'type' => Segment::class, 'options' => [ 'route' => '/notifier-inscrit/:session', 'defaults' => [ /** @see SessionController::notifierInscritAction() */ 'action' => 'notifier-inscrit', ], ], ], ], ], ], Loading
module/Atelier/config/module.config.php +6 −0 Original line number Diff line number Diff line <?php use Atelier\Form\Notification\NotificationForm; use Atelier\Form\Notification\NotificationFormFactory; use Atelier\Form\Notification\NotificationHydrator; use Atelier\Form\Notification\NotificationHydratorFactory; use Doctrine\ORM\Mapping\Driver\XmlDriver; use Doctrine\Persistence\Mapping\Driver\MappingDriverChain; use Atelier\Form\Justification\JustificationForm; Loading Loading @@ -55,11 +59,13 @@ return array( 'form_elements' => [ 'factories' => [ JustificationForm::class => JustificationFormFactory::class, NotificationForm::class => NotificationFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ JustificationHydrator::class => JustificationHydratorFactory::class, NotificationHydrator::class => NotificationHydratorFactory::class, ], ], 'controllers' => [ Loading
module/Atelier/src/Controller/SessionController.php +68 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Atelier\Controller; use Atelier\Form\Notification\NotificationFormAwareTrait; use Atelier\Service\Groupe\GroupeServiceAwareTrait; use Etudiant\Service\Etudiant\EtudiantServiceAwareTrait; use Atelier\Entity\Db\Inscription; Loading Loading @@ -68,6 +69,7 @@ class SessionController extends AbstractActionController use UserServiceAwareTrait; use InscriptionFormAwareTrait; use JustificationFormAwareTrait; use NotificationFormAwareTrait; use SelectionnerIntervenantFormAwareTrait; use SessionFormAwareTrait; use VilleServiceAwareTrait; Loading Loading @@ -491,6 +493,72 @@ class SessionController extends AbstractActionController return $vm; } public function notifierInscritAction(): ViewModel { $session = $this->getSessionService()->getRequestedSession($this); $form = $this->getNotificationForm(); $form->setAttribute('action', $this->url()->fromRoute('atelier/session/notifier-inscrit', ['session' => $session->getId()], [], true)); $form->bind($session); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $inscriptions = match ($data['liste']) { Inscription::PRINCIPALE => $session->getListePrincipale(), Inscription::COMPLEMENTAIRE => $session->getListeComplementaire(), 'tous' => $session->getListeValide(), default => [], }; $sujet = trim($data['sujet']); $corps = trim($data['corps']); foreach ($inscriptions as $inscription) { $adresse = $inscription->getEtudiant()->getEmail(); $mails[$inscription->getEtudiant()->getDenomination()] = ($adresse)?$this->getMailService()->sendMail($adresse, $sujet, $corps):null; if ($mails[$inscription->getEtudiant()->getDenomination()]) { $mails[$inscription->getEtudiant()->getDenomination()]->setMotsClefs([$session->generateTag(), $inscription->generateTag(), 'Notification interne']); $this->getMailService()->update($mails[$inscription->getEtudiant()->getDenomination()]); //$session->addMail($mails[$inscription->getEtudiant()->getDenomination()]); } } $this->getSessionService()->update($session); $success = []; $probleme = []; foreach ($mails as $individu => $mail) { if ($mail === null) $probleme[] = $individu; else $success[] = $individu; } if (!empty($success)) { $successTexte = " Les stagiaires ont été notifié·es (".count($success)." courrier·s envoyé·s)."; } if (!empty($probleme)) { $problemeTexte = "L'opération n'a pas pu être faite pour les inscriptions de : <ul>"; foreach ($probleme as $individu) $problemeTexte .= "<li>" . $individu . "</li>"; $problemeTexte .= "</ul>"; } $vm = new ViewModel([ 'title' => "Notification des inscrits", 'reponse' => "Opération effectuée", 'success' => $successTexte??null, 'error' => $problemeTexte??null, ]); $vm->setTemplate('default/reponse'); return $vm; } } $vm = new ViewModel([ 'title' => "Notification des inscrits", 'form' => $form, ]); $vm->setTemplate('default/default-form'); return $vm; } /** Enquete *******************************************************************************************************/ public function enqueteAction() : ViewModel Loading
module/Atelier/src/Controller/SessionControllerFactory.php +4 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ namespace Atelier\Controller; use Atelier\Form\Notification\NotificationForm; use Atelier\Service\Groupe\GroupeService; use Etudiant\Service\Etudiant\EtudiantService; use Atelier\Form\Inscription\InscriptionForm; Loading Loading @@ -70,6 +71,7 @@ class SessionControllerFactory * * @var InscriptionForm $inscriptionForm * @var JustificationFormAwareTrait $justificationForm * @var NotificationForm $notificationForm * @var SelectionnerIntervenantForm $selectionnerIntervenantForm * @var SessionForm $sessionForm */ Loading Loading @@ -97,6 +99,7 @@ class SessionControllerFactory $inscriptionForm = $container->get('FormElementManager')->get(InscriptionForm::class); $justificationForm = $container->get('FormElementManager')->get(JustificationForm::class); $notificationForm = $container->get('FormElementManager')->get(NotificationForm::class); $selectionnerIntervenantForm = $container->get('FormElementManager')->get(SelectionnerIntervenantForm::class); $sessionForm = $container->get('FormElementManager')->get(SessionForm::class); Loading Loading @@ -124,6 +127,7 @@ class SessionControllerFactory $controller->setInscriptionForm($inscriptionForm); $controller->setJustificationForm($justificationForm); $controller->setNotificationForm($notificationForm); $controller->setSelectionnerIntervenantForm($selectionnerIntervenantForm); $controller->setSessionForm($sessionForm); Loading