Loading module/Application/config/others/rapports.config.php +88 −1 Changes for module/Application/config/others/rapports.config.php: 88 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application; use Application\Assertion\Rapport\RapportAssertion; use Application\Controller\Factory\Rapport\RapportActiviteControllerFactory; use Application\Controller\Factory\Rapport\RapportActiviteRechercheControllerFactory; use Application\Controller\Factory\Rapport\RapportAvisControllerFactory; use Application\Controller\Factory\Rapport\RapportCsiControllerFactory; use Application\Controller\Factory\Rapport\RapportCsiRechercheControllerFactory; use Application\Controller\Factory\Rapport\RapportMiparcoursControllerFactory; Loading @@ -12,19 +13,24 @@ use Application\Controller\Factory\Rapport\RapportMiparcoursRechercheControllerF use Application\Controller\Factory\Rapport\RapportValidationControllerFactory; use Application\Controller\Rapport\RapportActiviteController; use Application\Controller\Rapport\RapportActiviteRechercheController; use Application\Controller\Rapport\RapportAvisController; use Application\Controller\Rapport\RapportCsiController; use Application\Controller\Rapport\RapportCsiRechercheController; use Application\Controller\Rapport\RapportMiparcoursController; use Application\Controller\Rapport\RapportMiparcoursRechercheController; use Application\Controller\Rapport\RapportValidationController; use Application\Form\Factory\RapportActiviteFormFactory; use Application\Form\Factory\RapportAvisFormFactory; use Application\Form\Factory\RapportCsiFormFactory; use Application\Form\Factory\RapportMiparcoursFormFactory; use Application\Form\Rapport\RapportAvisForm; use Application\Form\RapportActiviteForm; use Application\Form\RapportCsiForm; use Application\Form\RapportMiparcoursForm; use Application\Provider\Privilege\RapportPrivileges; use Application\Search\Controller\SearchControllerPluginFactory; use Application\Service\Rapport\Avis\RapportAvisService; use Application\Service\Rapport\Avis\RapportAvisServiceFactory; use Application\Service\Rapport\RapportSearchService; use Application\Service\Rapport\RapportSearchServiceFactory; use Application\Service\Rapport\RapportService; Loading Loading @@ -59,6 +65,10 @@ return [ RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN, RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN, RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN, RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN, RapportPrivileges::RAPPORT_CSI_LISTER_TOUT, RapportPrivileges::RAPPORT_CSI_LISTER_SIEN, Loading Loading @@ -175,6 +185,29 @@ return [ ], 'assertion' => 'Assertion\\Rapport', ], [ 'controller' => RapportAvisController::class, 'action' => [ 'ajouter', 'modifier', ], 'privileges' => [ RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN, ], 'assertion' => 'Assertion\\Rapport', ], [ 'controller' => RapportAvisController::class, 'action' => [ 'supprimer', ], 'privileges' => [ RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN, ], 'assertion' => 'Assertion\\Rapport', ], ////////////////////////////////////////// Rapports CSI ////////////////////////////////////////// [ Loading Loading @@ -440,6 +473,57 @@ return [ ], ], ], 'avis' => [ 'type' => 'Literal', 'options' => [ 'route' => '/avis', 'defaults' => [ 'controller' => RapportAvisController::class, ], ], 'may_terminate' => false, 'child_routes' => [ 'ajouter' => [ 'type' => 'Segment', 'options' => [ 'route' => '/ajouter/:rapport', 'constraints' => [ 'rapport' => '\d+', ], 'defaults' => [ 'action' => 'ajouter', /* @see RapportAvisController::ajouterAction() */ ], ], ], 'modifier' => [ 'type' => 'Segment', 'options' => [ 'route' => '/modifier/:rapportAvis', 'constraints' => [ 'rapportAvis' => '\d+', ], 'defaults' => [ 'action' => 'modifier', /* @see RapportAvisController::modifierAction() */ ], ], ], 'supprimer' => [ 'type' => 'Segment', 'options' => [ 'route' => '/supprimer/:rapportAvis', 'constraints' => [ 'rapportAvis' => '\d+', ], 'defaults' => [ 'action' => 'supprimer', /* @see RapportAvisController::supprimerAction() */ ], ], ], ], ], ], ], Loading Loading @@ -718,6 +802,7 @@ return [ RapportService::class => RapportServiceFactory::class, RapportSearchService::class => RapportSearchServiceFactory::class, RapportValidationService::class => RapportValidationServiceFactory::class, RapportAvisService::class => RapportAvisServiceFactory::class, ], ], 'controllers' => [ Loading @@ -728,7 +813,8 @@ return [ RapportCsiRechercheController::class => RapportCsiRechercheControllerFactory::class, RapportMiparcoursController::class => RapportMiparcoursControllerFactory::class, RapportMiparcoursRechercheController::class => RapportMiparcoursRechercheControllerFactory::class, RapportValidationController::class => RapportValidationControllerFactory::class RapportValidationController::class => RapportValidationControllerFactory::class, RapportAvisController::class => RapportAvisControllerFactory::class, ], ], 'controller_plugins' => [ Loading @@ -741,6 +827,7 @@ return [ RapportActiviteForm::class => RapportActiviteFormFactory::class, RapportCsiForm::class => RapportCsiFormFactory::class, RapportMiparcoursForm::class => RapportMiparcoursFormFactory::class, RapportAvisForm::class => RapportAvisFormFactory::class, ], ], ]; module/Application/src/Application/Assertion/Rapport/RapportEntityAssertion.php +28 −0 Changes for module/Application/src/Application/Assertion/Rapport/RapportEntityAssertion.php: 28 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -45,6 +45,10 @@ class RapportEntityAssertion implements EntityAssertionInterface case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: case RapportPrivileges::RAPPORT_CSI_TELEVERSER_TOUT: case RapportPrivileges::RAPPORT_CSI_TELEVERSER_SIEN: Loading @@ -66,6 +70,10 @@ class RapportEntityAssertion implements EntityAssertionInterface case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: case RapportPrivileges::RAPPORT_CSI_TELEVERSER_SIEN: case RapportPrivileges::RAPPORT_CSI_SUPPRIMER_SIEN: Loading @@ -82,6 +90,10 @@ class RapportEntityAssertion implements EntityAssertionInterface case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: case RapportPrivileges::RAPPORT_CSI_SUPPRIMER_TOUT: case RapportPrivileges::RAPPORT_CSI_SUPPRIMER_SIEN: Loading @@ -91,6 +103,14 @@ class RapportEntityAssertion implements EntityAssertionInterface $this->assertAucuneValidation(); } switch ($privilege) { case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: $this->assertRapportFinDeThese(); } return true; } Loading Loading @@ -134,4 +154,12 @@ class RapportEntityAssertion implements EntityAssertionInterface "Le rapport ne doit pas avoir été validé" ); } private function assertRapportFinDeThese() { $this->assertTrue( $this->rapport->getTypeRapport()->estRapportActivite() && $this->rapport->estFinal(), "Le rapport doit être un rapport d'activité de fin de thèse" ); } } No newline at end of file module/Application/src/Application/Controller/Factory/Rapport/RapportAvisControllerFactory.php 0 → 100644 +26 −0 Changes for module/Application/src/Application/Controller/Factory/Rapport/RapportAvisControllerFactory.php: 26 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Controller\Factory\Rapport; use Application\Controller\Rapport\RapportAvisController; use Application\Form\Rapport\RapportAvisForm; use Application\Service\Rapport\Avis\RapportAvisService; use Application\Service\Rapport\RapportService; use Interop\Container\ContainerInterface; class RapportAvisControllerFactory { public function __invoke(ContainerInterface $container): RapportAvisController { $rapportService = $container->get(RapportService::class); $rapportAvisService = $container->get(RapportAvisService::class); $form = $container->get('FormElementManager')->get(RapportAvisForm::class); $controller = new RapportAvisController(); $controller->setRapportService($rapportService); $controller->setRapportAvisService($rapportAvisService); $controller->setForm($form); return $controller; } } No newline at end of file module/Application/src/Application/Controller/Rapport/RapportAvisController.php 0 → 100644 +183 −0 Changes for module/Application/src/Application/Controller/Rapport/RapportAvisController.php: 183 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Controller\Rapport; use Application\Controller\AbstractController; use Application\Entity\Db\Rapport; use Application\Entity\Db\RapportAvis; use Application\EventRouterReplacerAwareTrait; use Application\Filter\IdifyFilter; use Application\Filter\IdifyFilterAwareTrait; use Application\Form\Rapport\RapportAvisForm; use Application\Service\Individu\IndividuServiceAwareTrait; use Application\Service\Notification\NotifierServiceAwareTrait; use Application\Service\Rapport\Avis\RapportAvisServiceAwareTrait; use Application\Service\Rapport\RapportServiceAwareTrait; use Doctrine\ORM\NoResultException; use UnicaenApp\Exception\RuntimeException; use Zend\Http\Response; class RapportAvisController extends AbstractController { use RapportServiceAwareTrait; use RapportAvisServiceAwareTrait; use IdifyFilterAwareTrait; use NotifierServiceAwareTrait; use IndividuServiceAwareTrait; use EventRouterReplacerAwareTrait; /** * @var string À redéfinir par les sous-classes. */ protected $routeName; /** * @var string */ protected $rapportAvisAjouteEventName = 'RAPPORT_AVIS_AJOUTE'; protected $rapportAvisModifieEventName = 'RAPPORT_AVIS_MODIFIE'; /** * @var RapportAvisForm */ protected $form; /** * @param RapportAvisForm $form */ public function setForm(RapportAvisForm $form) { $this->form = $form; } /** * @return array|\Zend\Http\Response */ public function ajouterAction() { $rapport = $this->requestedRapport(); $this->initForm(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $this->form->setData($data); if ($this->form->isValid()) { /** @var RapportAvis $rapportAvis */ $rapportAvis = $this->form->getData(); $rapportAvis->setRapport($rapport); $this->rapportAvisService->saveRapportAvis($rapportAvis); // déclenchement d'un événement "avis ajouté" $this->events->trigger( $this->rapportAvisAjouteEventName, $rapportAvis, [] ); $this->flashMessenger()->addSuccessMessage("Avis enregistré avec succès."); if ($redirectUrl = $this->params()->fromQuery('redirect')) { return $this->redirect()->toUrl($redirectUrl); } return $this->redirect()->toRoute('these/identite', ['these' => $rapport->getThese()->getId()]); } } return [ 'rapport' => $rapport, 'form' => $this->form, ]; } public function modifierAction() { $rapportAvis = $this->requestedRapportAvis(); $these = $rapportAvis->getRapport()->getThese(); $this->initForm(); $this->form->bind($rapportAvis); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $this->form->setData($data); if ($this->form->isValid()) { $this->rapportAvisService->saveRapportAvis($rapportAvis); // déclenchement d'un événement "avis modifié" $this->events->trigger( $this->rapportAvisModifieEventName, $rapportAvis, [] ); $this->flashMessenger()->addSuccessMessage("Avis modifié avec succès."); if ($redirectUrl = $this->params()->fromQuery('redirect')) { return $this->redirect()->toUrl($redirectUrl); } return $this->redirect()->toRoute('these/identite', ['these' => $these->getId()]); } } return [ 'rapport' => $rapportAvis->getRapport(), 'form' => $this->form, ]; } public function supprimerAction(): Response { $rapportAvis = $this->requestedRapportAvis(); $these = $rapportAvis->getRapport()->getThese(); $this->rapportAvisService->deleteRapportAvis($rapportAvis); $this->flashMessenger()->addSuccessMessage("Avis supprimé avec succès."); if ($redirectUrl = $this->params()->fromQuery('redirect')) { return $this->redirect()->toUrl($redirectUrl); } return $this->redirect()->toRoute('these/identite', ['these' => $these->getId()]); } /** * @return Rapport */ private function requestedRapport(): Rapport { $id = $this->params()->fromRoute('rapport') ?: $this->params()->fromQuery('rapport'); try { $rapport = $this->rapportService->findRapportById($id); } catch (NoResultException $e) { throw new RuntimeException("Aucun rapport trouvé avec cet id", 0, $e); } return $rapport; } /** * @return RapportAvis */ private function requestedRapportAvis(): RapportAvis { $id = $this->params()->fromRoute('rapportAvis') ?: $this->params()->fromQuery('rapportAvis'); try { $rapportAvis = $this->rapportAvisService->findRapportAvisById($id); } catch (NoResultException $e) { throw new RuntimeException("Aucun avis trouvé avec cet id : $id", 0, $e); } return $rapportAvis; } protected function initForm() { $this->form->setAvisPossibles(RapportAvis::AVIS); } } module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Rapport.dcm.xml +1 −0 Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Rapport.dcm.xml: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ </many-to-one> <one-to-many field="rapportValidations" target-entity="Application\Entity\Db\RapportValidation" mapped-by="rapport"/> <one-to-many field="rapportAvis" target-entity="Application\Entity\Db\RapportAvis" mapped-by="rapport"/> <field name="histoCreation" type="datetime" column="HISTO_CREATION"/> <field name="histoDestruction" type="datetime" column="HISTO_DESTRUCTION" nullable="true"/> Loading Loading
module/Application/config/others/rapports.config.php +88 −1 Changes for module/Application/config/others/rapports.config.php: 88 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application; use Application\Assertion\Rapport\RapportAssertion; use Application\Controller\Factory\Rapport\RapportActiviteControllerFactory; use Application\Controller\Factory\Rapport\RapportActiviteRechercheControllerFactory; use Application\Controller\Factory\Rapport\RapportAvisControllerFactory; use Application\Controller\Factory\Rapport\RapportCsiControllerFactory; use Application\Controller\Factory\Rapport\RapportCsiRechercheControllerFactory; use Application\Controller\Factory\Rapport\RapportMiparcoursControllerFactory; Loading @@ -12,19 +13,24 @@ use Application\Controller\Factory\Rapport\RapportMiparcoursRechercheControllerF use Application\Controller\Factory\Rapport\RapportValidationControllerFactory; use Application\Controller\Rapport\RapportActiviteController; use Application\Controller\Rapport\RapportActiviteRechercheController; use Application\Controller\Rapport\RapportAvisController; use Application\Controller\Rapport\RapportCsiController; use Application\Controller\Rapport\RapportCsiRechercheController; use Application\Controller\Rapport\RapportMiparcoursController; use Application\Controller\Rapport\RapportMiparcoursRechercheController; use Application\Controller\Rapport\RapportValidationController; use Application\Form\Factory\RapportActiviteFormFactory; use Application\Form\Factory\RapportAvisFormFactory; use Application\Form\Factory\RapportCsiFormFactory; use Application\Form\Factory\RapportMiparcoursFormFactory; use Application\Form\Rapport\RapportAvisForm; use Application\Form\RapportActiviteForm; use Application\Form\RapportCsiForm; use Application\Form\RapportMiparcoursForm; use Application\Provider\Privilege\RapportPrivileges; use Application\Search\Controller\SearchControllerPluginFactory; use Application\Service\Rapport\Avis\RapportAvisService; use Application\Service\Rapport\Avis\RapportAvisServiceFactory; use Application\Service\Rapport\RapportSearchService; use Application\Service\Rapport\RapportSearchServiceFactory; use Application\Service\Rapport\RapportService; Loading Loading @@ -59,6 +65,10 @@ return [ RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN, RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN, RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN, RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN, RapportPrivileges::RAPPORT_CSI_LISTER_TOUT, RapportPrivileges::RAPPORT_CSI_LISTER_SIEN, Loading Loading @@ -175,6 +185,29 @@ return [ ], 'assertion' => 'Assertion\\Rapport', ], [ 'controller' => RapportAvisController::class, 'action' => [ 'ajouter', 'modifier', ], 'privileges' => [ RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN, ], 'assertion' => 'Assertion\\Rapport', ], [ 'controller' => RapportAvisController::class, 'action' => [ 'supprimer', ], 'privileges' => [ RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT, RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN, ], 'assertion' => 'Assertion\\Rapport', ], ////////////////////////////////////////// Rapports CSI ////////////////////////////////////////// [ Loading Loading @@ -440,6 +473,57 @@ return [ ], ], ], 'avis' => [ 'type' => 'Literal', 'options' => [ 'route' => '/avis', 'defaults' => [ 'controller' => RapportAvisController::class, ], ], 'may_terminate' => false, 'child_routes' => [ 'ajouter' => [ 'type' => 'Segment', 'options' => [ 'route' => '/ajouter/:rapport', 'constraints' => [ 'rapport' => '\d+', ], 'defaults' => [ 'action' => 'ajouter', /* @see RapportAvisController::ajouterAction() */ ], ], ], 'modifier' => [ 'type' => 'Segment', 'options' => [ 'route' => '/modifier/:rapportAvis', 'constraints' => [ 'rapportAvis' => '\d+', ], 'defaults' => [ 'action' => 'modifier', /* @see RapportAvisController::modifierAction() */ ], ], ], 'supprimer' => [ 'type' => 'Segment', 'options' => [ 'route' => '/supprimer/:rapportAvis', 'constraints' => [ 'rapportAvis' => '\d+', ], 'defaults' => [ 'action' => 'supprimer', /* @see RapportAvisController::supprimerAction() */ ], ], ], ], ], ], ], Loading Loading @@ -718,6 +802,7 @@ return [ RapportService::class => RapportServiceFactory::class, RapportSearchService::class => RapportSearchServiceFactory::class, RapportValidationService::class => RapportValidationServiceFactory::class, RapportAvisService::class => RapportAvisServiceFactory::class, ], ], 'controllers' => [ Loading @@ -728,7 +813,8 @@ return [ RapportCsiRechercheController::class => RapportCsiRechercheControllerFactory::class, RapportMiparcoursController::class => RapportMiparcoursControllerFactory::class, RapportMiparcoursRechercheController::class => RapportMiparcoursRechercheControllerFactory::class, RapportValidationController::class => RapportValidationControllerFactory::class RapportValidationController::class => RapportValidationControllerFactory::class, RapportAvisController::class => RapportAvisControllerFactory::class, ], ], 'controller_plugins' => [ Loading @@ -741,6 +827,7 @@ return [ RapportActiviteForm::class => RapportActiviteFormFactory::class, RapportCsiForm::class => RapportCsiFormFactory::class, RapportMiparcoursForm::class => RapportMiparcoursFormFactory::class, RapportAvisForm::class => RapportAvisFormFactory::class, ], ], ];
module/Application/src/Application/Assertion/Rapport/RapportEntityAssertion.php +28 −0 Changes for module/Application/src/Application/Assertion/Rapport/RapportEntityAssertion.php: 28 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -45,6 +45,10 @@ class RapportEntityAssertion implements EntityAssertionInterface case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: case RapportPrivileges::RAPPORT_CSI_TELEVERSER_TOUT: case RapportPrivileges::RAPPORT_CSI_TELEVERSER_SIEN: Loading @@ -66,6 +70,10 @@ class RapportEntityAssertion implements EntityAssertionInterface case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: case RapportPrivileges::RAPPORT_CSI_TELEVERSER_SIEN: case RapportPrivileges::RAPPORT_CSI_SUPPRIMER_SIEN: Loading @@ -82,6 +90,10 @@ class RapportEntityAssertion implements EntityAssertionInterface case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_VALIDER_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: case RapportPrivileges::RAPPORT_CSI_SUPPRIMER_TOUT: case RapportPrivileges::RAPPORT_CSI_SUPPRIMER_SIEN: Loading @@ -91,6 +103,14 @@ class RapportEntityAssertion implements EntityAssertionInterface $this->assertAucuneValidation(); } switch ($privilege) { case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_AJOUTER_AVIS_SIEN: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_TOUT: case RapportPrivileges::RAPPORT_ACTIVITE_SUPPRIMER_AVIS_SIEN: $this->assertRapportFinDeThese(); } return true; } Loading Loading @@ -134,4 +154,12 @@ class RapportEntityAssertion implements EntityAssertionInterface "Le rapport ne doit pas avoir été validé" ); } private function assertRapportFinDeThese() { $this->assertTrue( $this->rapport->getTypeRapport()->estRapportActivite() && $this->rapport->estFinal(), "Le rapport doit être un rapport d'activité de fin de thèse" ); } } No newline at end of file
module/Application/src/Application/Controller/Factory/Rapport/RapportAvisControllerFactory.php 0 → 100644 +26 −0 Changes for module/Application/src/Application/Controller/Factory/Rapport/RapportAvisControllerFactory.php: 26 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Controller\Factory\Rapport; use Application\Controller\Rapport\RapportAvisController; use Application\Form\Rapport\RapportAvisForm; use Application\Service\Rapport\Avis\RapportAvisService; use Application\Service\Rapport\RapportService; use Interop\Container\ContainerInterface; class RapportAvisControllerFactory { public function __invoke(ContainerInterface $container): RapportAvisController { $rapportService = $container->get(RapportService::class); $rapportAvisService = $container->get(RapportAvisService::class); $form = $container->get('FormElementManager')->get(RapportAvisForm::class); $controller = new RapportAvisController(); $controller->setRapportService($rapportService); $controller->setRapportAvisService($rapportAvisService); $controller->setForm($form); return $controller; } } No newline at end of file
module/Application/src/Application/Controller/Rapport/RapportAvisController.php 0 → 100644 +183 −0 Changes for module/Application/src/Application/Controller/Rapport/RapportAvisController.php: 183 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Controller\Rapport; use Application\Controller\AbstractController; use Application\Entity\Db\Rapport; use Application\Entity\Db\RapportAvis; use Application\EventRouterReplacerAwareTrait; use Application\Filter\IdifyFilter; use Application\Filter\IdifyFilterAwareTrait; use Application\Form\Rapport\RapportAvisForm; use Application\Service\Individu\IndividuServiceAwareTrait; use Application\Service\Notification\NotifierServiceAwareTrait; use Application\Service\Rapport\Avis\RapportAvisServiceAwareTrait; use Application\Service\Rapport\RapportServiceAwareTrait; use Doctrine\ORM\NoResultException; use UnicaenApp\Exception\RuntimeException; use Zend\Http\Response; class RapportAvisController extends AbstractController { use RapportServiceAwareTrait; use RapportAvisServiceAwareTrait; use IdifyFilterAwareTrait; use NotifierServiceAwareTrait; use IndividuServiceAwareTrait; use EventRouterReplacerAwareTrait; /** * @var string À redéfinir par les sous-classes. */ protected $routeName; /** * @var string */ protected $rapportAvisAjouteEventName = 'RAPPORT_AVIS_AJOUTE'; protected $rapportAvisModifieEventName = 'RAPPORT_AVIS_MODIFIE'; /** * @var RapportAvisForm */ protected $form; /** * @param RapportAvisForm $form */ public function setForm(RapportAvisForm $form) { $this->form = $form; } /** * @return array|\Zend\Http\Response */ public function ajouterAction() { $rapport = $this->requestedRapport(); $this->initForm(); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $this->form->setData($data); if ($this->form->isValid()) { /** @var RapportAvis $rapportAvis */ $rapportAvis = $this->form->getData(); $rapportAvis->setRapport($rapport); $this->rapportAvisService->saveRapportAvis($rapportAvis); // déclenchement d'un événement "avis ajouté" $this->events->trigger( $this->rapportAvisAjouteEventName, $rapportAvis, [] ); $this->flashMessenger()->addSuccessMessage("Avis enregistré avec succès."); if ($redirectUrl = $this->params()->fromQuery('redirect')) { return $this->redirect()->toUrl($redirectUrl); } return $this->redirect()->toRoute('these/identite', ['these' => $rapport->getThese()->getId()]); } } return [ 'rapport' => $rapport, 'form' => $this->form, ]; } public function modifierAction() { $rapportAvis = $this->requestedRapportAvis(); $these = $rapportAvis->getRapport()->getThese(); $this->initForm(); $this->form->bind($rapportAvis); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $this->form->setData($data); if ($this->form->isValid()) { $this->rapportAvisService->saveRapportAvis($rapportAvis); // déclenchement d'un événement "avis modifié" $this->events->trigger( $this->rapportAvisModifieEventName, $rapportAvis, [] ); $this->flashMessenger()->addSuccessMessage("Avis modifié avec succès."); if ($redirectUrl = $this->params()->fromQuery('redirect')) { return $this->redirect()->toUrl($redirectUrl); } return $this->redirect()->toRoute('these/identite', ['these' => $these->getId()]); } } return [ 'rapport' => $rapportAvis->getRapport(), 'form' => $this->form, ]; } public function supprimerAction(): Response { $rapportAvis = $this->requestedRapportAvis(); $these = $rapportAvis->getRapport()->getThese(); $this->rapportAvisService->deleteRapportAvis($rapportAvis); $this->flashMessenger()->addSuccessMessage("Avis supprimé avec succès."); if ($redirectUrl = $this->params()->fromQuery('redirect')) { return $this->redirect()->toUrl($redirectUrl); } return $this->redirect()->toRoute('these/identite', ['these' => $these->getId()]); } /** * @return Rapport */ private function requestedRapport(): Rapport { $id = $this->params()->fromRoute('rapport') ?: $this->params()->fromQuery('rapport'); try { $rapport = $this->rapportService->findRapportById($id); } catch (NoResultException $e) { throw new RuntimeException("Aucun rapport trouvé avec cet id", 0, $e); } return $rapport; } /** * @return RapportAvis */ private function requestedRapportAvis(): RapportAvis { $id = $this->params()->fromRoute('rapportAvis') ?: $this->params()->fromQuery('rapportAvis'); try { $rapportAvis = $this->rapportAvisService->findRapportAvisById($id); } catch (NoResultException $e) { throw new RuntimeException("Aucun avis trouvé avec cet id : $id", 0, $e); } return $rapportAvis; } protected function initForm() { $this->form->setAvisPossibles(RapportAvis::AVIS); } }
module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Rapport.dcm.xml +1 −0 Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.Rapport.dcm.xml: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ </many-to-one> <one-to-many field="rapportValidations" target-entity="Application\Entity\Db\RapportValidation" mapped-by="rapport"/> <one-to-many field="rapportAvis" target-entity="Application\Entity\Db\RapportAvis" mapped-by="rapport"/> <field name="histoCreation" type="datetime" column="HISTO_CREATION"/> <field name="histoDestruction" type="datetime" column="HISTO_DESTRUCTION" nullable="true"/> Loading