Loading module/Soutenance/config/others/presoutenance.config.php +3 −0 Changes for module/Soutenance/config/others/presoutenance.config.php: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ use Soutenance\Form\DateRenduRapport\DateRenduRapportHydrator; use Soutenance\Provider\Privilege\AvisSoutenancePrivileges; use Soutenance\Provider\Privilege\EngagementImpartialitePrivileges; use Soutenance\Provider\Privilege\PresoutenancePrivileges; use Soutenance\Service\Adresse\AdresseService; use Soutenance\Service\Adresse\AdresseServiceFactory; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; use Laminas\Router\Http\Literal; Loading Loading @@ -388,6 +390,7 @@ return [ 'service_manager' => [ 'factories' => [ PresoutenanceAssertion::class => PresoutenanceAssertionFactory::class, AdresseService::class => AdresseServiceFactory::class, ], ], 'controllers' => [ Loading module/Soutenance/config/others/proposition.config.php +86 −0 Changes for module/Soutenance/config/others/proposition.config.php: 86 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -113,12 +113,26 @@ return [ 'anglais', 'confidentialite', 'changement-titre', 'ajouter-adresse', 'modifier-adresse', 'historiser-adresse', 'restaurer-adresse', ], 'privileges' => [ PropositionPrivileges::PROPOSITION_MODIFIER, PropositionPrivileges::PROPOSITION_MODIFIER_GESTION, ], ], [ 'controller' => PropositionController::class, 'action' => [ 'supprimer-adresse', 'demander-adresse', ], 'privileges' => [ PropositionPrivileges::PROPOSITION_MODIFIER_GESTION, ], ], [ 'controller' => PropositionController::class, 'action' => [ Loading Loading @@ -216,6 +230,78 @@ return [ ], ], 'child_routes' => [ 'ajouter-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/ajouter-adresse/:proposition', 'defaults' => [ /** @see PropositionController::ajouterAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'ajouter-adresse', ], ], ], 'modifier-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/modifier-adresse/:adresse', 'defaults' => [ /** @see PropositionController::modifierAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'modifier-adresse', ], ], ], 'historiser-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/historiser-adresse/:adresse', 'defaults' => [ /** @see PropositionController::historiserAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'historiser-adresse', ], ], ], 'restaurer-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/restaurer-adresse/:adresse', 'defaults' => [ /** @see PropositionController::restaurerAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'restaurer-adresse', ], ], ], 'supprimer-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/supprimer-adresse/:adresse', 'defaults' => [ /** @see PropositionController::supprimerAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'supprimer-adresse', ], ], ], 'demander-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/demander-adresse/:proposition', 'defaults' => [ /** @see PropositionController::demanderAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'demander-adresse', ], ], ], 'horodatages' => [ 'type' => Segment::class, 'may_terminate' => true, Loading module/Soutenance/src/Soutenance/Controller/PropositionController.php +123 −1 Changes for module/Soutenance/src/Soutenance/Controller/PropositionController.php: 123 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -21,9 +21,11 @@ use Laminas\View\Model\ViewModel; use Laminas\View\Renderer\PhpRenderer; use Notification\Service\NotifierServiceAwareTrait; use Soutenance\Assertion\PropositionAssertionAwareTrait; use Soutenance\Entity\Adresse; use Soutenance\Entity\Etat; use Soutenance\Entity\Membre; use Soutenance\Entity\Proposition; use Soutenance\Form\AdresseSoutenance\AdresseSoutenanceFormAwareTrait; use Soutenance\Form\Anglais\AnglaisFormAwareTrait; use Soutenance\Form\ChangementTitre\ChangementTitreFormAwareTrait; use Soutenance\Form\Confidentialite\ConfidentialiteFormAwareTrait; Loading @@ -35,6 +37,7 @@ use Soutenance\Provider\Parametre\SoutenanceParametres; use Soutenance\Provider\Privilege\PropositionPrivileges; use Soutenance\Provider\Template\PdfTemplates; use Soutenance\Provider\Validation\TypeValidation; use Soutenance\Service\Adresse\AdresseServiceAwareTrait; use Soutenance\Service\Avis\AvisServiceAwareTrait; use Soutenance\Service\Exporter\SermentExporter\SermentPdfExporter; use Soutenance\Service\Horodatage\HorodatageService; Loading @@ -50,7 +53,6 @@ use Structure\Service\Etablissement\EtablissementServiceAwareTrait; use These\Entity\Db\Acteur; use These\Service\Acteur\ActeurServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; use UnicaenAuth\Entity\Db\RoleInterface; use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; Loading @@ -58,6 +60,7 @@ use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; class PropositionController extends AbstractController { use ActeurServiceAwareTrait; use AdresseServiceAwareTrait; use AvisServiceAwareTrait; use EcoleDoctoraleServiceAwareTrait; use EtablissementServiceAwareTrait; Loading @@ -75,6 +78,7 @@ class PropositionController extends AbstractController use RenduServiceAwareTrait; use ValidatationServiceAwareTrait; use AdresseSoutenanceFormAwareTrait; use DateLieuFormAwareTrait; use MembreFromAwareTrait; use LabelEuropeenFormAwareTrait; Loading Loading @@ -853,6 +857,124 @@ class PropositionController extends AbstractController return $vm; } /** Adresse de la soutenance **************************************************************************************/ public function ajouterAdresseAction(): ViewModel { $proposition = $this->getPropositionService()->getRequestedProposition($this); $these = $proposition->getThese(); $adresse = new Adresse(); $adresse->setProposition($proposition); $form = $this->getAdresseSoutenanceForm(); $form->setAttribute('action', $this->url()->fromRoute('soutenance/proposition/ajouter-adresse', ['these' => $these->getId(), 'proposition' => $proposition->getId()], [], true)); $form->bind($adresse); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getAdresseService()->create($adresse); exit(); } } $vm = new ViewModel([ 'title' => "Ajout de l'adresse exacte de soutenance", 'form' => $form, ]); $vm->setTemplate('soutenance/default/default-form'); return $vm; } public function modifierAdresseAction(): ViewModel { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $form = $this->getAdresseSoutenanceForm(); $form->setAttribute('action', $this->url()->fromRoute('soutenance/proposition/modifier-adresse', ['these' => $adresse->getAssociatedThese()->getId(), 'adresse' => $adresse->getId()], [], true)); $form->bind($adresse); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getAdresseService()->update($adresse); exit(); } } $vm = new ViewModel([ 'title' => "Modification de l'adresse exacte de soutenance", 'form' => $form, ]); $vm->setTemplate('soutenance/default/default-form'); return $vm; } public function historiserAdresseAction(): Response { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $this->getAdresseService()->historise($adresse); $retour = $this->params()->fromQuery('retour'); if ($retour) return $this->redirect()->toUrl($retour); return $this->redirect()->toRoute('soutenance/proposition', ['these' => $adresse->getAssociatedThese()->getId()], [], true); } public function restaurerAdresseAction(): Response { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $this->getAdresseService()->restore($adresse); $retour = $this->params()->fromQuery('retour'); if ($retour) return $this->redirect()->toUrl($retour); return $this->redirect()->toRoute('soutenance/proposition', ['these' => $adresse->getAssociatedThese()->getId()], [], true); } public function supprimerAdresseAction(): ViewModel { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") $this->getAdresseService()->delete($adresse); exit(); } $vm = new ViewModel(); if ($adresse !== null) { $vm->setTemplate('soutenance/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de l'adresse exacte", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('soutenance/proposition/supprimer-adresse', ['these' => $adresse->getAssociatedThese()->getId(), "adresse" => $adresse->getId()], [], true), ]); } return $vm; } public function demanderAdresseAction(): Response { $proposition = $this->getPropositionService()->getRequestedProposition($this); $these = $proposition->getThese(); try { $notif = $this->soutenanceNotificationFactory->createNotificationDemandeAdresse($proposition); if (empty($notif->getTo())) { throw new RuntimeException( "Aucune adresse mail trouvée pour les aspects Doctorat de l'établissement d'inscription '{$these->getEtablissement()}'"); } $this->notifierService->trigger($notif); } catch (\Notification\Exception\RuntimeException $e) { // aucun destinataire , todo : cas à gérer ! } return $this->redirect()->toRoute('soutenance/proposition', ['these' => $these->getId()], [], true); } /** Error *********************************************************************************************************/ /** Loading module/Soutenance/src/Soutenance/Controller/PropositionControllerFactory.php +9 −1 Changes for module/Soutenance/src/Soutenance/Controller/PropositionControllerFactory.php: 9 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ use Notification\Service\NotifierService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use Soutenance\Assertion\PropositionAssertion; use Soutenance\Form\AdresseSoutenance\AdresseSoutenanceForm; use Soutenance\Form\Anglais\AnglaisForm; use Soutenance\Form\ChangementTitre\ChangementTitreForm; use Soutenance\Form\Confidentialite\ConfidentialiteForm; Loading @@ -19,6 +20,7 @@ use Soutenance\Form\DateLieu\DateLieuForm; use Soutenance\Form\LabelEuropeen\LabelEuropeenForm; use Soutenance\Form\Membre\MembreForm; use Soutenance\Form\Refus\RefusForm; use Soutenance\Service\Adresse\AdresseService; use Soutenance\Service\Avis\AvisService; use Soutenance\Service\Horodatage\HorodatageService; use Soutenance\Service\Justificatif\JustificatifService; Loading @@ -45,6 +47,7 @@ class PropositionControllerFactory { /** * @var ActeurService $acteurService * @var AdresseService $adresseService * @var AvisService $avisService * @var EcoleDoctoraleService $ecoleDoctoraleService * @var EtablissementService $etablissementService Loading @@ -62,6 +65,7 @@ class PropositionControllerFactory * @var RenduService $renduService */ $acteurService = $container->get(ActeurService::class); $adresseService = $container->get(AdresseService::class); $avisService = $container->get(AvisService::class); $ecoleDoctoraleService = $container->get(EcoleDoctoraleService::class); $etablissementService = $container->get(EtablissementService::class); Loading @@ -79,6 +83,7 @@ class PropositionControllerFactory $renduService = $container->get(RenduService::class); /** * @var AdresseSoutenanceForm $adresseForm * @var DateLieuForm $dateLieuForm * @var MembreForm $membreForm * @var LabelEuropeenForm $labelEuropeenForm Loading @@ -87,6 +92,7 @@ class PropositionControllerFactory * @var RefusForm $refusForm * @var ChangementTitreForm $changementTitreForm */ $adresseForm = $container->get('FormElementManager')->get(AdresseSoutenanceForm::class); $dateLieuForm = $container->get('FormElementManager')->get(DateLieuForm::class); $membreForm = $container->get('FormElementManager')->get(MembreForm::class); $labelEuropeenForm = $container->get('FormElementManager')->get(LabelEuropeenForm::class); Loading @@ -106,6 +112,7 @@ class PropositionControllerFactory $controller = new PropositionController(); $controller->setActeurService($acteurService); $controller->setAdresseService($adresseService); $controller->setAvisService($avisService); $controller->setEcoleDoctoraleService($ecoleDoctoraleService); $controller->setEtablissementService($etablissementService); Loading @@ -122,6 +129,7 @@ class PropositionControllerFactory $controller->setParametreService($parametreService); $controller->setRenduService($renduService); $controller->setAdresseSoutenanceForm($adresseForm); $controller->setDateLieuForm($dateLieuForm); $controller->setMembreForm($membreForm); $controller->setLabelEuropeenForm($labelEuropeenForm); Loading @@ -134,7 +142,7 @@ class PropositionControllerFactory $controller->setPropositionAssertion($propositionAssertion); /** @var \Soutenance\Service\Notification\SoutenanceNotificationFactory $soutenanceNotificationFactory */ /** @var SoutenanceNotificationFactory $soutenanceNotificationFactory */ $soutenanceNotificationFactory = $container->get(SoutenanceNotificationFactory::class); $controller->setSoutenanceNotificationFactory($soutenanceNotificationFactory); Loading module/Soutenance/src/Soutenance/Entity/Adresse.php 0 → 100644 +98 −0 Changes for module/Soutenance/src/Soutenance/Entity/Adresse.php: 98 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Soutenance\Entity; use JetBrains\PhpStorm\Pure; use These\Entity\Db\These; use UnicaenApp\Entity\HistoriqueAwareInterface; use UnicaenApp\Entity\HistoriqueAwareTrait; class Adresse implements HistoriqueAwareInterface { use HistoriqueAwareTrait; private ?int $id = null; private ?Proposition $proposition = null; private ?string $ligne1 = null; // Salle et batiment private ?string $ligne2 = null; // Numéro et voie private ?string $ligne3 = null; // compléments private ?string $ligne4 = null; // Code postal et ville public function getId(): ?int { return $this->id; } public function setId(?int $id): void { $this->id = $id; } public function getProposition(): ?Proposition { return $this->proposition; } public function setProposition(?Proposition $proposition): void { $this->proposition = $proposition; } public function getLigne1(): ?string { return $this->ligne1; } public function setLigne1(?string $ligne1): void { $this->ligne1 = $ligne1; } public function getLigne2(): ?string { return $this->ligne2; } public function setLigne2(?string $ligne2): void { $this->ligne2 = $ligne2; } public function getLigne3(): ?string { return $this->ligne3; } public function setLigne3(?string $ligne3): void { $this->ligne3 = $ligne3; } public function getLigne4(): ?string { return $this->ligne4; } public function setLigne4(?string $ligne4): void { $this->ligne4 = $ligne4; } /** Helpers *******************************************************************************************************/ #[Pure] public function getAssociatedThese() : ?These { $proposition = $this->getProposition(); if ($proposition === null) return null; return $proposition->getThese(); } #[Pure] public function format(): string { $texte = ""; if ($this->getLigne1()) $texte .= $this->getLigne1() . "<br>"; if ($this->getLigne2()) $texte .= $this->getLigne2() . "<br>"; if ($this->getLigne3()) $texte .= $this->getLigne3() . "<br>"; if ($this->getLigne4()) $texte .= $this->getLigne4() . "<br>"; return $texte; } } No newline at end of file Loading
module/Soutenance/config/others/presoutenance.config.php +3 −0 Changes for module/Soutenance/config/others/presoutenance.config.php: 3 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ use Soutenance\Form\DateRenduRapport\DateRenduRapportHydrator; use Soutenance\Provider\Privilege\AvisSoutenancePrivileges; use Soutenance\Provider\Privilege\EngagementImpartialitePrivileges; use Soutenance\Provider\Privilege\PresoutenancePrivileges; use Soutenance\Service\Adresse\AdresseService; use Soutenance\Service\Adresse\AdresseServiceFactory; use UnicaenAuth\Guard\PrivilegeController; use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider; use Laminas\Router\Http\Literal; Loading Loading @@ -388,6 +390,7 @@ return [ 'service_manager' => [ 'factories' => [ PresoutenanceAssertion::class => PresoutenanceAssertionFactory::class, AdresseService::class => AdresseServiceFactory::class, ], ], 'controllers' => [ Loading
module/Soutenance/config/others/proposition.config.php +86 −0 Changes for module/Soutenance/config/others/proposition.config.php: 86 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -113,12 +113,26 @@ return [ 'anglais', 'confidentialite', 'changement-titre', 'ajouter-adresse', 'modifier-adresse', 'historiser-adresse', 'restaurer-adresse', ], 'privileges' => [ PropositionPrivileges::PROPOSITION_MODIFIER, PropositionPrivileges::PROPOSITION_MODIFIER_GESTION, ], ], [ 'controller' => PropositionController::class, 'action' => [ 'supprimer-adresse', 'demander-adresse', ], 'privileges' => [ PropositionPrivileges::PROPOSITION_MODIFIER_GESTION, ], ], [ 'controller' => PropositionController::class, 'action' => [ Loading Loading @@ -216,6 +230,78 @@ return [ ], ], 'child_routes' => [ 'ajouter-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/ajouter-adresse/:proposition', 'defaults' => [ /** @see PropositionController::ajouterAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'ajouter-adresse', ], ], ], 'modifier-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/modifier-adresse/:adresse', 'defaults' => [ /** @see PropositionController::modifierAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'modifier-adresse', ], ], ], 'historiser-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/historiser-adresse/:adresse', 'defaults' => [ /** @see PropositionController::historiserAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'historiser-adresse', ], ], ], 'restaurer-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/restaurer-adresse/:adresse', 'defaults' => [ /** @see PropositionController::restaurerAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'restaurer-adresse', ], ], ], 'supprimer-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/supprimer-adresse/:adresse', 'defaults' => [ /** @see PropositionController::supprimerAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'supprimer-adresse', ], ], ], 'demander-adresse' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/demander-adresse/:proposition', 'defaults' => [ /** @see PropositionController::demanderAdresseAction() */ 'controller' => PropositionController::class, 'action' => 'demander-adresse', ], ], ], 'horodatages' => [ 'type' => Segment::class, 'may_terminate' => true, Loading
module/Soutenance/src/Soutenance/Controller/PropositionController.php +123 −1 Changes for module/Soutenance/src/Soutenance/Controller/PropositionController.php: 123 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -21,9 +21,11 @@ use Laminas\View\Model\ViewModel; use Laminas\View\Renderer\PhpRenderer; use Notification\Service\NotifierServiceAwareTrait; use Soutenance\Assertion\PropositionAssertionAwareTrait; use Soutenance\Entity\Adresse; use Soutenance\Entity\Etat; use Soutenance\Entity\Membre; use Soutenance\Entity\Proposition; use Soutenance\Form\AdresseSoutenance\AdresseSoutenanceFormAwareTrait; use Soutenance\Form\Anglais\AnglaisFormAwareTrait; use Soutenance\Form\ChangementTitre\ChangementTitreFormAwareTrait; use Soutenance\Form\Confidentialite\ConfidentialiteFormAwareTrait; Loading @@ -35,6 +37,7 @@ use Soutenance\Provider\Parametre\SoutenanceParametres; use Soutenance\Provider\Privilege\PropositionPrivileges; use Soutenance\Provider\Template\PdfTemplates; use Soutenance\Provider\Validation\TypeValidation; use Soutenance\Service\Adresse\AdresseServiceAwareTrait; use Soutenance\Service\Avis\AvisServiceAwareTrait; use Soutenance\Service\Exporter\SermentExporter\SermentPdfExporter; use Soutenance\Service\Horodatage\HorodatageService; Loading @@ -50,7 +53,6 @@ use Structure\Service\Etablissement\EtablissementServiceAwareTrait; use These\Entity\Db\Acteur; use These\Service\Acteur\ActeurServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; use UnicaenAuth\Entity\Db\RoleInterface; use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait; use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; Loading @@ -58,6 +60,7 @@ use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait; class PropositionController extends AbstractController { use ActeurServiceAwareTrait; use AdresseServiceAwareTrait; use AvisServiceAwareTrait; use EcoleDoctoraleServiceAwareTrait; use EtablissementServiceAwareTrait; Loading @@ -75,6 +78,7 @@ class PropositionController extends AbstractController use RenduServiceAwareTrait; use ValidatationServiceAwareTrait; use AdresseSoutenanceFormAwareTrait; use DateLieuFormAwareTrait; use MembreFromAwareTrait; use LabelEuropeenFormAwareTrait; Loading Loading @@ -853,6 +857,124 @@ class PropositionController extends AbstractController return $vm; } /** Adresse de la soutenance **************************************************************************************/ public function ajouterAdresseAction(): ViewModel { $proposition = $this->getPropositionService()->getRequestedProposition($this); $these = $proposition->getThese(); $adresse = new Adresse(); $adresse->setProposition($proposition); $form = $this->getAdresseSoutenanceForm(); $form->setAttribute('action', $this->url()->fromRoute('soutenance/proposition/ajouter-adresse', ['these' => $these->getId(), 'proposition' => $proposition->getId()], [], true)); $form->bind($adresse); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getAdresseService()->create($adresse); exit(); } } $vm = new ViewModel([ 'title' => "Ajout de l'adresse exacte de soutenance", 'form' => $form, ]); $vm->setTemplate('soutenance/default/default-form'); return $vm; } public function modifierAdresseAction(): ViewModel { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $form = $this->getAdresseSoutenanceForm(); $form->setAttribute('action', $this->url()->fromRoute('soutenance/proposition/modifier-adresse', ['these' => $adresse->getAssociatedThese()->getId(), 'adresse' => $adresse->getId()], [], true)); $form->bind($adresse); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getAdresseService()->update($adresse); exit(); } } $vm = new ViewModel([ 'title' => "Modification de l'adresse exacte de soutenance", 'form' => $form, ]); $vm->setTemplate('soutenance/default/default-form'); return $vm; } public function historiserAdresseAction(): Response { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $this->getAdresseService()->historise($adresse); $retour = $this->params()->fromQuery('retour'); if ($retour) return $this->redirect()->toUrl($retour); return $this->redirect()->toRoute('soutenance/proposition', ['these' => $adresse->getAssociatedThese()->getId()], [], true); } public function restaurerAdresseAction(): Response { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $this->getAdresseService()->restore($adresse); $retour = $this->params()->fromQuery('retour'); if ($retour) return $this->redirect()->toUrl($retour); return $this->redirect()->toRoute('soutenance/proposition', ['these' => $adresse->getAssociatedThese()->getId()], [], true); } public function supprimerAdresseAction(): ViewModel { $adresse = $this->getAdresseService()->getRequestedAdresse($this); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") $this->getAdresseService()->delete($adresse); exit(); } $vm = new ViewModel(); if ($adresse !== null) { $vm->setTemplate('soutenance/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de l'adresse exacte", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('soutenance/proposition/supprimer-adresse', ['these' => $adresse->getAssociatedThese()->getId(), "adresse" => $adresse->getId()], [], true), ]); } return $vm; } public function demanderAdresseAction(): Response { $proposition = $this->getPropositionService()->getRequestedProposition($this); $these = $proposition->getThese(); try { $notif = $this->soutenanceNotificationFactory->createNotificationDemandeAdresse($proposition); if (empty($notif->getTo())) { throw new RuntimeException( "Aucune adresse mail trouvée pour les aspects Doctorat de l'établissement d'inscription '{$these->getEtablissement()}'"); } $this->notifierService->trigger($notif); } catch (\Notification\Exception\RuntimeException $e) { // aucun destinataire , todo : cas à gérer ! } return $this->redirect()->toRoute('soutenance/proposition', ['these' => $these->getId()], [], true); } /** Error *********************************************************************************************************/ /** Loading
module/Soutenance/src/Soutenance/Controller/PropositionControllerFactory.php +9 −1 Changes for module/Soutenance/src/Soutenance/Controller/PropositionControllerFactory.php: 9 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ use Notification\Service\NotifierService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; use Soutenance\Assertion\PropositionAssertion; use Soutenance\Form\AdresseSoutenance\AdresseSoutenanceForm; use Soutenance\Form\Anglais\AnglaisForm; use Soutenance\Form\ChangementTitre\ChangementTitreForm; use Soutenance\Form\Confidentialite\ConfidentialiteForm; Loading @@ -19,6 +20,7 @@ use Soutenance\Form\DateLieu\DateLieuForm; use Soutenance\Form\LabelEuropeen\LabelEuropeenForm; use Soutenance\Form\Membre\MembreForm; use Soutenance\Form\Refus\RefusForm; use Soutenance\Service\Adresse\AdresseService; use Soutenance\Service\Avis\AvisService; use Soutenance\Service\Horodatage\HorodatageService; use Soutenance\Service\Justificatif\JustificatifService; Loading @@ -45,6 +47,7 @@ class PropositionControllerFactory { /** * @var ActeurService $acteurService * @var AdresseService $adresseService * @var AvisService $avisService * @var EcoleDoctoraleService $ecoleDoctoraleService * @var EtablissementService $etablissementService Loading @@ -62,6 +65,7 @@ class PropositionControllerFactory * @var RenduService $renduService */ $acteurService = $container->get(ActeurService::class); $adresseService = $container->get(AdresseService::class); $avisService = $container->get(AvisService::class); $ecoleDoctoraleService = $container->get(EcoleDoctoraleService::class); $etablissementService = $container->get(EtablissementService::class); Loading @@ -79,6 +83,7 @@ class PropositionControllerFactory $renduService = $container->get(RenduService::class); /** * @var AdresseSoutenanceForm $adresseForm * @var DateLieuForm $dateLieuForm * @var MembreForm $membreForm * @var LabelEuropeenForm $labelEuropeenForm Loading @@ -87,6 +92,7 @@ class PropositionControllerFactory * @var RefusForm $refusForm * @var ChangementTitreForm $changementTitreForm */ $adresseForm = $container->get('FormElementManager')->get(AdresseSoutenanceForm::class); $dateLieuForm = $container->get('FormElementManager')->get(DateLieuForm::class); $membreForm = $container->get('FormElementManager')->get(MembreForm::class); $labelEuropeenForm = $container->get('FormElementManager')->get(LabelEuropeenForm::class); Loading @@ -106,6 +112,7 @@ class PropositionControllerFactory $controller = new PropositionController(); $controller->setActeurService($acteurService); $controller->setAdresseService($adresseService); $controller->setAvisService($avisService); $controller->setEcoleDoctoraleService($ecoleDoctoraleService); $controller->setEtablissementService($etablissementService); Loading @@ -122,6 +129,7 @@ class PropositionControllerFactory $controller->setParametreService($parametreService); $controller->setRenduService($renduService); $controller->setAdresseSoutenanceForm($adresseForm); $controller->setDateLieuForm($dateLieuForm); $controller->setMembreForm($membreForm); $controller->setLabelEuropeenForm($labelEuropeenForm); Loading @@ -134,7 +142,7 @@ class PropositionControllerFactory $controller->setPropositionAssertion($propositionAssertion); /** @var \Soutenance\Service\Notification\SoutenanceNotificationFactory $soutenanceNotificationFactory */ /** @var SoutenanceNotificationFactory $soutenanceNotificationFactory */ $soutenanceNotificationFactory = $container->get(SoutenanceNotificationFactory::class); $controller->setSoutenanceNotificationFactory($soutenanceNotificationFactory); Loading
module/Soutenance/src/Soutenance/Entity/Adresse.php 0 → 100644 +98 −0 Changes for module/Soutenance/src/Soutenance/Entity/Adresse.php: 98 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Soutenance\Entity; use JetBrains\PhpStorm\Pure; use These\Entity\Db\These; use UnicaenApp\Entity\HistoriqueAwareInterface; use UnicaenApp\Entity\HistoriqueAwareTrait; class Adresse implements HistoriqueAwareInterface { use HistoriqueAwareTrait; private ?int $id = null; private ?Proposition $proposition = null; private ?string $ligne1 = null; // Salle et batiment private ?string $ligne2 = null; // Numéro et voie private ?string $ligne3 = null; // compléments private ?string $ligne4 = null; // Code postal et ville public function getId(): ?int { return $this->id; } public function setId(?int $id): void { $this->id = $id; } public function getProposition(): ?Proposition { return $this->proposition; } public function setProposition(?Proposition $proposition): void { $this->proposition = $proposition; } public function getLigne1(): ?string { return $this->ligne1; } public function setLigne1(?string $ligne1): void { $this->ligne1 = $ligne1; } public function getLigne2(): ?string { return $this->ligne2; } public function setLigne2(?string $ligne2): void { $this->ligne2 = $ligne2; } public function getLigne3(): ?string { return $this->ligne3; } public function setLigne3(?string $ligne3): void { $this->ligne3 = $ligne3; } public function getLigne4(): ?string { return $this->ligne4; } public function setLigne4(?string $ligne4): void { $this->ligne4 = $ligne4; } /** Helpers *******************************************************************************************************/ #[Pure] public function getAssociatedThese() : ?These { $proposition = $this->getProposition(); if ($proposition === null) return null; return $proposition->getThese(); } #[Pure] public function format(): string { $texte = ""; if ($this->getLigne1()) $texte .= $this->getLigne1() . "<br>"; if ($this->getLigne2()) $texte .= $this->getLigne2() . "<br>"; if ($this->getLigne3()) $texte .= $this->getLigne3() . "<br>"; if ($this->getLigne4()) $texte .= $this->getLigne4() . "<br>"; return $texte; } } No newline at end of file