Loading module/Application/config/others/president.config.php 0 → 100644 +138 −0 Original line number Diff line number Diff line <?php namespace Application; use Application\Controller\CoEncadrantController; use Application\Controller\Factory\PresidentJuryControllerFactory; use Application\Controller\PresidentJuryController; use Application\Form\AdresseMail\AdresseMailForm; use Application\Form\AdresseMail\AdresseMailFormFactory; use Application\Form\AdresseMail\AdresseMailHydrator; use Application\Provider\Privilege\PresidentJuryPrivileges; use UnicaenAuth\Guard\PrivilegeController; use Zend\Router\Http\Literal; use Zend\Router\Http\Segment; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => PresidentJuryController::class, 'action' => [ 'index', ], 'privileges' => [ PresidentJuryPrivileges::PRESIDENT_GESTION ], ], [ 'controller' => PresidentJuryController::class, 'action' => [ 'ajouter-mail', 'supprimer-mail', ], 'privileges' => [ PresidentJuryPrivileges::PRESIDENT_MODIFIER_MAIL, ], ], [ 'controller' => PresidentJuryController::class, 'action' => [ 'notifier-correction', ], 'privileges' => [ PresidentJuryPrivileges::PRESIDENT_NOTIFIER, ], ], ], ], ], 'router' => [ 'routes' => [ 'president-jury' => [ 'type' => Literal::class, 'options' => [ 'route' => '/president-jury', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'index', ], ], 'may_terminate' => true, 'child_routes' => [ 'notifier-correction' => [ 'type' => Segment::class, 'options' => [ 'route' => '/notifier-correction/:president', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'notifier-correction', ], ], ], 'ajouter-mail' => [ 'type' => Segment::class, 'options' => [ 'route' => '/ajouter-mail/:president', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'ajouter-mail', ], ], ], 'supprimer-mail' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer-mail/:president', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'supprimer-mail', ], ], ], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ 'pages' => [ 'admin' => [ 'pages' => [ 'president-jury' => [ 'label' => 'Présidents du jury', 'route' => 'president-jury', 'resource' => PrivilegeController::getResourceId(CoEncadrantController::class, 'index'), 'order' => 1100, ], ], ], ], ], ], ], 'controllers' => [ 'factories' => [ PresidentJuryController::class => PresidentJuryControllerFactory::class, ], ], 'form_elements' => [ 'factories' => [ AdresseMailForm::class => AdresseMailFormFactory::class, ], ], 'hydrators' => [ 'invokables' => [ AdresseMailHydrator::class => AdresseMailHydrator::class, ] ], 'service_manager' => [ 'factories' => [ ], ], ]; module/Application/config/others/these.config.php +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ use Application\Service\These\Factory\TheseObserverServiceFactory; use Application\Service\These\Factory\TheseRechercheServiceFactory; use Application\Service\These\Factory\TheseServiceFactory; use Application\Service\These\TheseRechercheService; use Application\Service\These\TheseService; use Application\Service\TheseAnneeUniv\TheseAnneeUnivService; use Application\Service\TheseAnneeUniv\TheseAnneeUnivServiceFactory; use Application\View\Helper\Url\UrlTheseHelperFactory; Loading Loading @@ -1108,6 +1109,7 @@ return [ ], 'aliases' => [ TheseRechercheService::class => 'TheseRechercheService', TheseService::class => 'TheseService', ] ], 'controllers' => [ Loading module/Application/config/others/utilisateur.config.php +20 −1 Original line number Diff line number Diff line <?php use Application\Controller\Factory\UtilisateurControllerFactory; use Application\Controller\UtilisateurController; use Application\Form\CreationUtilisateurForm; use Application\Form\CreationUtilisateurFromIndividuForm; use Application\Form\Factory\CreationUtilisateurFormFactory; Loading @@ -15,6 +14,7 @@ use Application\Form\Validator\NewEmailValidator; use Application\Form\Validator\PasswordValidator; use Application\Provider\Privilege\UtilisateurPrivileges; use Application\Service\Individu\IndividuServiceFactory; use Application\Service\Utilisateur\UtilisateurService; use Application\Service\Utilisateur\UtilisateurServiceFactory; use Application\View\Helper\IndividuUsurpationHelperFactory; use UnicaenAuth\Guard\PrivilegeController; Loading Loading @@ -65,6 +65,13 @@ return [ ], 'roles' => [], ], [ 'controller' => 'Application\Controller\Utilisateur', 'action' => [ 'appariemment', ], 'roles' => ['user'], ], ], ], ], Loading Loading @@ -129,6 +136,15 @@ return [ ], ], ], 'appariemment' => [ 'type' => Segment::class, 'options' => [ 'route' => '/appariemment/:these/:individu', 'defaults' => [ 'action' => 'appariemment', ], ], ], 'rechercher-people' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -203,6 +219,9 @@ return [ 'IndividuService' => IndividuServiceFactory::class, 'UtilisateurService' => UtilisateurServiceFactory::class, ], 'aliases' => [ UtilisateurService::class => 'UtilisateurService' ] ], 'controllers' => [ 'invokables' => [ Loading module/Application/src/Application/Controller/Factory/PresidentJuryControllerFactory.php 0 → 100644 +41 −0 Original line number Diff line number Diff line <?php namespace Application\Controller\Factory; use Application\Controller\PresidentJuryController; use Application\Form\AdresseMail\AdresseMailForm; use Application\Service\Acteur\ActeurService; use Application\Service\These\TheseService; use Interop\Container\ContainerInterface; use Soutenance\Service\Membre\MembreService; class PresidentJuryControllerFactory { /** * @param ContainerInterface $container * @return PresidentJuryController */ public function __invoke(ContainerInterface $container) { /** * @var ActeurService $acteurService * @var MembreService $membreService * @var TheseService $theseService */ $acteurService = $container->get(ActeurService::class); $membreService = $container->get(MembreService::class); $theseService = $container->get(TheseService::class); /** * @var AdresseMailForm $adresseMailForm */ $adresseMailForm = $container->get('FormElementManager')->get(AdresseMailForm::class); $controller = new PresidentJuryController(); $controller->setActeurService($acteurService); $controller->setMembreService($membreService); $controller->setTheseService($theseService); $controller->setAdresseMailForm($adresseMailForm); return $controller; } } No newline at end of file module/Application/src/Application/Controller/PresidentJuryController.php 0 → 100644 +79 −0 Original line number Diff line number Diff line <?php namespace Application\Controller; use Application\Entity\Db\Acteur; use Application\Form\AdresseMail\AdresseMailFormAwareTrait; use Application\Service\Acteur\ActeurServiceAwareTrait; use Application\Service\These\TheseServiceAwareTrait; use DateInterval; use DateTime; use Soutenance\Service\Membre\MembreServiceAwareTrait; use Zend\Mvc\Controller\AbstractActionController; use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger; use Zend\View\Model\ViewModel; /** @method FlashMessenger flashMessenger() **/ class PresidentJuryController extends AbstractActionController { use ActeurServiceAwareTrait; use MembreServiceAwareTrait; use TheseServiceAwareTrait; use AdresseMailFormAwareTrait; public function indexAction() { $date = (new DateTime())->sub(new DateInterval('P4M')); $presidents = $this->getActeurService()->getRepository()->fetchPresidentDuJuryTheseAvecCorrection(); $presidents = array_filter($presidents, function (Acteur $president) use ($date) { return $president->getThese()->getDateSoutenance() > $date;}); return new ViewModel([ 'presidents' => $presidents, ]); } public function notifierCorrectionAction() { $president = $this->getActeurService()->getRequestedActeur($this, 'president'); $these = $president->getThese(); $this->getTheseService()->notifierCorrectionsApportees($these, $this); return $this->redirect()->toRoute('president-jury', [], [], true); } public function ajouterMailAction() { $president = $this->getActeurService()->getRequestedActeur($this, 'president'); $membre = $this->getMembreService()->createDummyMembre(); $form = $this->getAdresseMailForm(); $form->setAttribute('action', $this->url()->fromRoute('president-jury/ajouter-mail', ['president' => $president->getId()], [], true)); $form->bind($membre); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $membre->setActeur($president); $this->getMembreService()->create($membre); } } $vm = new ViewModel([ 'title' => "Ajout d'un mail pour le président du jury", 'form' => $form, ]); $vm->setTemplate("soutenance/default/default-form"); return $vm; } public function supprimerMailAction() { $president = $this->getActeurService()->getRequestedActeur($this, 'president'); $membre = $this->getMembreService()->getMembreByActeur($president); $this->getMembreService()->delete($membre); return $this->redirect()->toRoute('president-jury', [], [], true); } } No newline at end of file Loading
module/Application/config/others/president.config.php 0 → 100644 +138 −0 Original line number Diff line number Diff line <?php namespace Application; use Application\Controller\CoEncadrantController; use Application\Controller\Factory\PresidentJuryControllerFactory; use Application\Controller\PresidentJuryController; use Application\Form\AdresseMail\AdresseMailForm; use Application\Form\AdresseMail\AdresseMailFormFactory; use Application\Form\AdresseMail\AdresseMailHydrator; use Application\Provider\Privilege\PresidentJuryPrivileges; use UnicaenAuth\Guard\PrivilegeController; use Zend\Router\Http\Literal; use Zend\Router\Http\Segment; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => PresidentJuryController::class, 'action' => [ 'index', ], 'privileges' => [ PresidentJuryPrivileges::PRESIDENT_GESTION ], ], [ 'controller' => PresidentJuryController::class, 'action' => [ 'ajouter-mail', 'supprimer-mail', ], 'privileges' => [ PresidentJuryPrivileges::PRESIDENT_MODIFIER_MAIL, ], ], [ 'controller' => PresidentJuryController::class, 'action' => [ 'notifier-correction', ], 'privileges' => [ PresidentJuryPrivileges::PRESIDENT_NOTIFIER, ], ], ], ], ], 'router' => [ 'routes' => [ 'president-jury' => [ 'type' => Literal::class, 'options' => [ 'route' => '/president-jury', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'index', ], ], 'may_terminate' => true, 'child_routes' => [ 'notifier-correction' => [ 'type' => Segment::class, 'options' => [ 'route' => '/notifier-correction/:president', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'notifier-correction', ], ], ], 'ajouter-mail' => [ 'type' => Segment::class, 'options' => [ 'route' => '/ajouter-mail/:president', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'ajouter-mail', ], ], ], 'supprimer-mail' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer-mail/:president', 'defaults' => [ 'controller' => PresidentJuryController::class, 'action' => 'supprimer-mail', ], ], ], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ 'pages' => [ 'admin' => [ 'pages' => [ 'president-jury' => [ 'label' => 'Présidents du jury', 'route' => 'president-jury', 'resource' => PrivilegeController::getResourceId(CoEncadrantController::class, 'index'), 'order' => 1100, ], ], ], ], ], ], ], 'controllers' => [ 'factories' => [ PresidentJuryController::class => PresidentJuryControllerFactory::class, ], ], 'form_elements' => [ 'factories' => [ AdresseMailForm::class => AdresseMailFormFactory::class, ], ], 'hydrators' => [ 'invokables' => [ AdresseMailHydrator::class => AdresseMailHydrator::class, ] ], 'service_manager' => [ 'factories' => [ ], ], ];
module/Application/config/others/these.config.php +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ use Application\Service\These\Factory\TheseObserverServiceFactory; use Application\Service\These\Factory\TheseRechercheServiceFactory; use Application\Service\These\Factory\TheseServiceFactory; use Application\Service\These\TheseRechercheService; use Application\Service\These\TheseService; use Application\Service\TheseAnneeUniv\TheseAnneeUnivService; use Application\Service\TheseAnneeUniv\TheseAnneeUnivServiceFactory; use Application\View\Helper\Url\UrlTheseHelperFactory; Loading Loading @@ -1108,6 +1109,7 @@ return [ ], 'aliases' => [ TheseRechercheService::class => 'TheseRechercheService', TheseService::class => 'TheseService', ] ], 'controllers' => [ Loading
module/Application/config/others/utilisateur.config.php +20 −1 Original line number Diff line number Diff line <?php use Application\Controller\Factory\UtilisateurControllerFactory; use Application\Controller\UtilisateurController; use Application\Form\CreationUtilisateurForm; use Application\Form\CreationUtilisateurFromIndividuForm; use Application\Form\Factory\CreationUtilisateurFormFactory; Loading @@ -15,6 +14,7 @@ use Application\Form\Validator\NewEmailValidator; use Application\Form\Validator\PasswordValidator; use Application\Provider\Privilege\UtilisateurPrivileges; use Application\Service\Individu\IndividuServiceFactory; use Application\Service\Utilisateur\UtilisateurService; use Application\Service\Utilisateur\UtilisateurServiceFactory; use Application\View\Helper\IndividuUsurpationHelperFactory; use UnicaenAuth\Guard\PrivilegeController; Loading Loading @@ -65,6 +65,13 @@ return [ ], 'roles' => [], ], [ 'controller' => 'Application\Controller\Utilisateur', 'action' => [ 'appariemment', ], 'roles' => ['user'], ], ], ], ], Loading Loading @@ -129,6 +136,15 @@ return [ ], ], ], 'appariemment' => [ 'type' => Segment::class, 'options' => [ 'route' => '/appariemment/:these/:individu', 'defaults' => [ 'action' => 'appariemment', ], ], ], 'rechercher-people' => [ 'type' => Segment::class, 'options' => [ Loading Loading @@ -203,6 +219,9 @@ return [ 'IndividuService' => IndividuServiceFactory::class, 'UtilisateurService' => UtilisateurServiceFactory::class, ], 'aliases' => [ UtilisateurService::class => 'UtilisateurService' ] ], 'controllers' => [ 'invokables' => [ Loading
module/Application/src/Application/Controller/Factory/PresidentJuryControllerFactory.php 0 → 100644 +41 −0 Original line number Diff line number Diff line <?php namespace Application\Controller\Factory; use Application\Controller\PresidentJuryController; use Application\Form\AdresseMail\AdresseMailForm; use Application\Service\Acteur\ActeurService; use Application\Service\These\TheseService; use Interop\Container\ContainerInterface; use Soutenance\Service\Membre\MembreService; class PresidentJuryControllerFactory { /** * @param ContainerInterface $container * @return PresidentJuryController */ public function __invoke(ContainerInterface $container) { /** * @var ActeurService $acteurService * @var MembreService $membreService * @var TheseService $theseService */ $acteurService = $container->get(ActeurService::class); $membreService = $container->get(MembreService::class); $theseService = $container->get(TheseService::class); /** * @var AdresseMailForm $adresseMailForm */ $adresseMailForm = $container->get('FormElementManager')->get(AdresseMailForm::class); $controller = new PresidentJuryController(); $controller->setActeurService($acteurService); $controller->setMembreService($membreService); $controller->setTheseService($theseService); $controller->setAdresseMailForm($adresseMailForm); return $controller; } } No newline at end of file
module/Application/src/Application/Controller/PresidentJuryController.php 0 → 100644 +79 −0 Original line number Diff line number Diff line <?php namespace Application\Controller; use Application\Entity\Db\Acteur; use Application\Form\AdresseMail\AdresseMailFormAwareTrait; use Application\Service\Acteur\ActeurServiceAwareTrait; use Application\Service\These\TheseServiceAwareTrait; use DateInterval; use DateTime; use Soutenance\Service\Membre\MembreServiceAwareTrait; use Zend\Mvc\Controller\AbstractActionController; use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger; use Zend\View\Model\ViewModel; /** @method FlashMessenger flashMessenger() **/ class PresidentJuryController extends AbstractActionController { use ActeurServiceAwareTrait; use MembreServiceAwareTrait; use TheseServiceAwareTrait; use AdresseMailFormAwareTrait; public function indexAction() { $date = (new DateTime())->sub(new DateInterval('P4M')); $presidents = $this->getActeurService()->getRepository()->fetchPresidentDuJuryTheseAvecCorrection(); $presidents = array_filter($presidents, function (Acteur $president) use ($date) { return $president->getThese()->getDateSoutenance() > $date;}); return new ViewModel([ 'presidents' => $presidents, ]); } public function notifierCorrectionAction() { $president = $this->getActeurService()->getRequestedActeur($this, 'president'); $these = $president->getThese(); $this->getTheseService()->notifierCorrectionsApportees($these, $this); return $this->redirect()->toRoute('president-jury', [], [], true); } public function ajouterMailAction() { $president = $this->getActeurService()->getRequestedActeur($this, 'president'); $membre = $this->getMembreService()->createDummyMembre(); $form = $this->getAdresseMailForm(); $form->setAttribute('action', $this->url()->fromRoute('president-jury/ajouter-mail', ['president' => $president->getId()], [], true)); $form->bind($membre); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $membre->setActeur($president); $this->getMembreService()->create($membre); } } $vm = new ViewModel([ 'title' => "Ajout d'un mail pour le président du jury", 'form' => $form, ]); $vm->setTemplate("soutenance/default/default-form"); return $vm; } public function supprimerMailAction() { $president = $this->getActeurService()->getRequestedActeur($this, 'president'); $membre = $this->getMembreService()->getMembreByActeur($president); $this->getMembreService()->delete($membre); return $this->redirect()->toRoute('president-jury', [], [], true); } } No newline at end of file