Loading module/Application/config/merged/entretien-professionnel.config.php +86 −1 Changes for module/Application/config/merged/entretien-professionnel.config.php: 86 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -12,9 +12,15 @@ use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampag use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneFormFactory; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneHydrator; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneHydratorFactory; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationForm; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationFormFactory; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationHydrator; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationHydratorFactory; use Application\Provider\Privilege\EntretienproPrivileges; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneServiceFactory; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationServiceFactory; use Application\Service\EntretienProfessionnel\EntretienProfessionnelService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelServiceFactory; use UnicaenPrivilege\Guard\PrivilegeController; Loading Loading @@ -96,10 +102,20 @@ return [ ], 'roles' => [], ], [ 'controller' => EntretienProfessionnelController::class, 'action' => [ 'ajouter-observation', 'modifier-observation', 'historiser-observation', 'restaurer-observation', 'detruire-observation', ], 'roles' => [], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ Loading Loading @@ -242,6 +258,7 @@ return [ ], ], ], /** CAMPAGNE */ 'campagne' => [ 'type' => Literal::class, 'may_terminate' => false, Loading Loading @@ -306,6 +323,71 @@ return [ ], ] ], /** OBSERVATION */ 'observation' => [ 'type' => Literal::class, 'may_terminate' => false, 'options' => [ 'route' => '/observation', ], 'child_routes' => [ 'ajouter' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/ajouter/:entretien-professionnel', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'ajouter-observation', ], ], ], 'modifier' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/modifier/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'modifier-observation', ], ], ], 'historiser' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/historiser/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'historiser-observation', ], ], ], 'restaurer' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/restaurer/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'restaurer-observation', ], ], ], 'detruire' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/detruire/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'detruire-observation', ], ], ], ] ], ], ], ], Loading @@ -315,6 +397,7 @@ return [ 'factories' => [ EntretienProfessionnelService::class => EntretienProfessionnelServiceFactory::class, EntretienProfessionnelCampagneService::class => EntretienProfessionnelCampagneServiceFactory::class, EntretienProfessionnelObservationService::class => EntretienProfessionnelObservationServiceFactory::class, ], ], 'controllers' => [ Loading @@ -326,12 +409,14 @@ return [ 'factories' => [ EntretienProfessionnelForm::class => EntretienProfessionnelFormFactory::class, EntretienProfessionnelCampagneForm::class => EntretienProfessionnelCampagneFormFactory::class, EntretienProfessionnelObservationForm::class => EntretienProfessionnelObservationFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ EntretienProfessionnelHydrator::class => EntretienProfessionnelHydratorFactory::class, EntretienProfessionnelCampagneHydrator::class => EntretienProfessionnelCampagneHydratorFactory::class, EntretienProfessionnelObservationHydrator::class => EntretienProfessionnelObservationHydratorFactory::class, ], ] Loading module/Application/src/Application/Controller/EntretienProfessionnelController.php +105 −3 Changes for module/Application/src/Application/Controller/EntretienProfessionnelController.php: 105 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -4,12 +4,15 @@ namespace Application\Controller; use Application\Entity\Db\EntretienProfessionnel; use Application\Entity\Db\EntretienProfessionnelCampagne; use Application\Entity\Db\EntretienProfessionnelObservation; use Application\Form\EntretienProfessionnel\EntretienProfessionnelForm; use Application\Form\EntretienProfessionnel\EntretienProfessionnelFormAwareTrait; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneFormAwareTrait; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationFormAwareTrait; use Application\Service\Agent\AgentServiceAwareTrait; use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneServiceAwareTrait; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationServiceAwareTrait; use Application\Service\EntretienProfessionnel\EntretienProfessionnelServiceAwareTrait; use Application\Service\Export\EntretienProfessionnel\EntretienProfessionnelPdfExporter; use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait; Loading @@ -30,12 +33,14 @@ use Zend\Http\Request; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; class EntretienProfessionnelController extends AbstractActionController { class EntretienProfessionnelController extends AbstractActionController { use DateTimeAwareTrait; use AgentServiceAwareTrait; use ConfigurationServiceAwareTrait; use EntretienProfessionnelServiceAwareTrait; use EntretienProfessionnelCampagneServiceAwareTrait; use EntretienProfessionnelObservationServiceAwareTrait; use MailingServiceAwareTrait; use ParcoursDeFormationServiceAwareTrait; use UserServiceAwareTrait; Loading @@ -45,6 +50,7 @@ class EntretienProfessionnelController extends AbstractActionController { use EntretienProfessionnelFormAwareTrait; use EntretienProfessionnelCampagneFormAwareTrait; use EntretienProfessionnelObservationFormAwareTrait; use FormulaireServiceAwareTrait; use FormulaireInstanceServiceAwareTrait; Loading Loading @@ -77,7 +83,7 @@ class EntretienProfessionnelController extends AbstractActionController { // ne pas dupliquer les entretiens (si il existe alors on l'affiche) $entretien = null; if ($campagne !== null AND $agent !== null) $entretien = $this->getEntretienProfessionnelService()->getEntretienProfessionnelByAgentAndCampagne($agent, $campagne); if ($campagne !== null and $agent !== null) $entretien = $this->getEntretienProfessionnelService()->getEntretienProfessionnelByAgentAndCampagne($agent, $campagne); if ($entretien !== null) return $this->redirect()->toRoute('entretien-professionnel/afficher', ["campagne" => $campagne->getId()], [], true); $entretien = new EntretienProfessionnel(); Loading Loading @@ -281,7 +287,7 @@ class EntretienProfessionnelController extends AbstractActionController { if ($data["reponse"] === "non") { $validation = $this->getValidationInstanceService()->createValidation($validationType, $entretien, "Refus"); } if ($validation !== null AND $entretien !== null) { if ($validation !== null and $entretien !== null) { switch ($type) { case 'Agent' : $entretien->setValidationAgent($validation); Loading Loading @@ -446,4 +452,100 @@ class EntretienProfessionnelController extends AbstractActionController { } return $vm; } /** OBSERVATION ***************************************************************************************************/ public function ajouterObservationAction() { $entretien = $this->getEntretienProfessionnelService()->getRequestedEntretienProfessionnel($this); $observation = new EntretienProfessionnelObservation(); $observation->setEntretien($entretien); $form = $this->getEntretienProfessionnelObservationForm(); $form->setAttribute('action', $this->url()->fromRoute('entretien-professionnel/observation/ajouter', ['entretien-professionnel' => $entretien->getId()], [], true)); $form->bind($observation); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getEntretienProfessionnelObservationService()->create($observation); } } $vm = new ViewModel(); $vm->setTemplate('application/entretien-professionnel/observation-form'); $vm->setVariables([ 'title' => "Ajout d'une observation", 'form' => $form, ]); return $vm; } public function modifierObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); $form = $this->getEntretienProfessionnelObservationForm(); $form->setAttribute('action', $this->url()->fromRoute('entretien-professionnel/observation/modifier', ['observation' => $observation->getId()], [], true)); $form->bind($observation); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getEntretienProfessionnelObservationService()->update($observation); } } $vm = new ViewModel(); $vm->setTemplate('application/default/default-form'); $vm->setVariables([ 'title' => "Modification d'une observation", 'form' => $form, ]); return $vm; } public function historiserObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); $this->getEntretienProfessionnelObservationService()->historise($observation); return $this->redirect()->toRoute('entretien-professionnel/renseigner', ['entretien-professionnel' => $observation->getEntretien()->getId()], ['fragment' => 'avis'], true); } public function restaurerObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); $this->getEntretienProfessionnelObservationService()->restore($observation); return $this->redirect()->toRoute('entretien-professionnel/renseigner', ['entretien-professionnel' => $observation->getEntretien()->getId()], ['fragment' => 'avis'], true); } public function detruireObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") $this->getEntretienProfessionnelObservationService()->delete($observation); exit(); } $vm = new ViewModel(); if ($observation !== null) { $vm->setTemplate('application/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de l'observation", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('entretien-professionnel/observation/detruire', ["observation" => $observation->getId()], [], true), ]); } return $vm; } } module/Application/src/Application/Controller/EntretienProfessionnelControllerFactory.php +11 −0 Changes for module/Application/src/Application/Controller/EntretienProfessionnelControllerFactory.php: 11 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -4,9 +4,11 @@ namespace Application\Controller; use Application\Form\EntretienProfessionnel\EntretienProfessionnelForm; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneForm; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationForm; use Application\Service\Agent\AgentService; use Application\Service\Configuration\ConfigurationService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelService; use Application\Service\ParcoursDeFormation\ParcoursDeFormationService; use Application\Service\Structure\StructureService; Loading @@ -29,6 +31,7 @@ class EntretienProfessionnelControllerFactory { * @var ConfigurationService $configurationService * @var EntretienProfessionnelService $entretienProfesionnelService * @var EntretienProfessionnelCampagneService $entretienProfesionnelCampagneService * @var EntretienProfessionnelObservationService $entretienProfessionnelObservationService * @var FormulaireService $formulaireService * @var FormulaireInstanceService $formulaireInstanceService * @var MailingService $mailingService Loading @@ -42,6 +45,7 @@ class EntretienProfessionnelControllerFactory { $configurationService = $container->get(ConfigurationService::class); $entretienProfesionnelService = $container->get(EntretienProfessionnelService::class); $entretienProfesionnelCampagneService = $container->get(EntretienProfessionnelCampagneService::class); $entretienProfessionnelObservationService = $container->get(EntretienProfessionnelObservationService::class); $formulaireService = $container->get(FormulaireService::class); $formulaireInstanceService = $container->get(FormulaireInstanceService::class); $mailingService = $container->get(MailingService::class); Loading @@ -53,9 +57,11 @@ class EntretienProfessionnelControllerFactory { /** * @var EntretienProfessionnelForm $entretienProfessionnelForm * @var EntretienProfessionnelCampagneForm $campagneForm * @var EntretienProfessionnelObservationForm $observationForm */ $entretienProfessionnelForm = $container->get('FormElementManager')->get(EntretienProfessionnelForm::class); $campagneForm = $container->get('FormElementManager')->get(EntretienProfessionnelCampagneForm::class); $observationForm = $container->get('FormElementManager')->get(EntretienProfessionnelObservationForm::class); /* @var PhpRenderer $renderer */ $renderer = $container->get('ViewRenderer'); Loading @@ -63,11 +69,13 @@ class EntretienProfessionnelControllerFactory { /** @var EntretienProfessionnelController $controller */ $controller = new EntretienProfessionnelController(); $controller->setRenderer($renderer); $controller->setAgentService($agentService); $controller->setUserService($userService); $controller->setConfigurationService($configurationService); $controller->setEntretienProfessionnelService($entretienProfesionnelService); $controller->setEntretienProfessionnelCampagneService($entretienProfesionnelCampagneService); $controller->setEntretienProfessionnelObservationService($entretienProfessionnelObservationService); $controller->setFormulaireInstanceService($formulaireInstanceService); $controller->setParcoursDeFormationService($parcoursDeFormationService); $controller->setValidationInstanceService($validationInstanceService); Loading @@ -75,8 +83,11 @@ class EntretienProfessionnelControllerFactory { $controller->setFormulaireService($formulaireService); $controller->setMailingService($mailingService); $controller->setStructureService($structureService); $controller->setEntretienProfessionnelForm($entretienProfessionnelForm); $controller->setEntretienProfessionnelCampagneForm($campagneForm); $controller->setEntretienProfessionnelObservationForm($observationForm); return $controller; } } module/Application/src/Application/Entity/Db/EntretienProfessionnel.php +17 −0 Changes for module/Application/src/Application/Entity/Db/EntretienProfessionnel.php: 17 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Entity\Db; use Autoform\Entity\Db\FormulaireInstance; use DateTime; use Doctrine\Common\Collections\ArrayCollection; use UnicaenApp\Exception\RuntimeException; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\HistoriqueAwareTrait; Loading Loading @@ -194,6 +195,22 @@ class EntretienProfessionnel implements HistoriqueAwareInterface { return $this; } /** * @return EntretienProfessionnelObservation */ public function getObservationActive() { $observation = null; /** @var EntretienProfessionnelObservation $obs */ foreach ($this->observations as $obs) { if ($obs->estNonHistorise()) { if ($observation !== null) throw new RuntimeException("Plusieurs observations actives pour l'entretien #".$this->id, 0, null); $observation = $obs; } } return $observation; } /** VALIDATION ****************************************************************************************************/ /** Loading module/Application/src/Application/Form/EntretienProfessionnelObservation/EntretienProfessionnelObservationForm.php 0 → 100644 +59 −0 Changes for module/Application/src/Application/Form/EntretienProfessionnelObservation/EntretienProfessionnelObservationForm.php: 59 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\EntretienProfessionnelObservation; use Zend\Form\Element\Button; use Zend\Form\Element\Textarea; use Zend\Form\Form; class EntretienProfessionnelObservationForm extends Form { public function init() { // entretien $this->add([ 'name' => 'obs-entretien', 'type' => Textarea::class, 'options' => [ 'label' => "Observation sur l'entretien : ", 'label_attributes' => [ 'class' => 'control-label', ], ], 'attributes' => [ 'id' => 'obs-entretien', 'class' => 'type2 form-control', ] ]); // perspective $this->add([ 'name' => 'obs-perspective', 'type' => Textarea::class, 'options' => [ 'label' => "Observation sur les perspectives : ", 'label_attributes' => [ 'class' => 'control-label', ], ], 'attributes' => [ 'id' => 'obs-perspective', 'class' => 'type2 form-control', ] ]); // button $this->add([ 'type' => Button::class, 'name' => 'submit', 'options' => [ 'label' => '<i class="fas fa-save"></i> Ajouter', 'label_options' => [ 'disable_html_escape' => true, ], ], 'attributes' => [ 'type' => 'submit', 'class' => 'btn btn-primary', ], ]); } } No newline at end of file Loading
module/Application/config/merged/entretien-professionnel.config.php +86 −1 Changes for module/Application/config/merged/entretien-professionnel.config.php: 86 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -12,9 +12,15 @@ use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampag use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneFormFactory; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneHydrator; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneHydratorFactory; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationForm; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationFormFactory; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationHydrator; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationHydratorFactory; use Application\Provider\Privilege\EntretienproPrivileges; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneServiceFactory; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationServiceFactory; use Application\Service\EntretienProfessionnel\EntretienProfessionnelService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelServiceFactory; use UnicaenPrivilege\Guard\PrivilegeController; Loading Loading @@ -96,10 +102,20 @@ return [ ], 'roles' => [], ], [ 'controller' => EntretienProfessionnelController::class, 'action' => [ 'ajouter-observation', 'modifier-observation', 'historiser-observation', 'restaurer-observation', 'detruire-observation', ], 'roles' => [], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ Loading Loading @@ -242,6 +258,7 @@ return [ ], ], ], /** CAMPAGNE */ 'campagne' => [ 'type' => Literal::class, 'may_terminate' => false, Loading Loading @@ -306,6 +323,71 @@ return [ ], ] ], /** OBSERVATION */ 'observation' => [ 'type' => Literal::class, 'may_terminate' => false, 'options' => [ 'route' => '/observation', ], 'child_routes' => [ 'ajouter' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/ajouter/:entretien-professionnel', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'ajouter-observation', ], ], ], 'modifier' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/modifier/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'modifier-observation', ], ], ], 'historiser' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/historiser/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'historiser-observation', ], ], ], 'restaurer' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/restaurer/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'restaurer-observation', ], ], ], 'detruire' => [ 'type' => Segment::class, 'may_terminate' => true, 'options' => [ 'route' => '/detruire/:observation', 'defaults' => [ 'controller' => EntretienProfessionnelController::class, 'action' => 'detruire-observation', ], ], ], ] ], ], ], ], Loading @@ -315,6 +397,7 @@ return [ 'factories' => [ EntretienProfessionnelService::class => EntretienProfessionnelServiceFactory::class, EntretienProfessionnelCampagneService::class => EntretienProfessionnelCampagneServiceFactory::class, EntretienProfessionnelObservationService::class => EntretienProfessionnelObservationServiceFactory::class, ], ], 'controllers' => [ Loading @@ -326,12 +409,14 @@ return [ 'factories' => [ EntretienProfessionnelForm::class => EntretienProfessionnelFormFactory::class, EntretienProfessionnelCampagneForm::class => EntretienProfessionnelCampagneFormFactory::class, EntretienProfessionnelObservationForm::class => EntretienProfessionnelObservationFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ EntretienProfessionnelHydrator::class => EntretienProfessionnelHydratorFactory::class, EntretienProfessionnelCampagneHydrator::class => EntretienProfessionnelCampagneHydratorFactory::class, EntretienProfessionnelObservationHydrator::class => EntretienProfessionnelObservationHydratorFactory::class, ], ] Loading
module/Application/src/Application/Controller/EntretienProfessionnelController.php +105 −3 Changes for module/Application/src/Application/Controller/EntretienProfessionnelController.php: 105 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -4,12 +4,15 @@ namespace Application\Controller; use Application\Entity\Db\EntretienProfessionnel; use Application\Entity\Db\EntretienProfessionnelCampagne; use Application\Entity\Db\EntretienProfessionnelObservation; use Application\Form\EntretienProfessionnel\EntretienProfessionnelForm; use Application\Form\EntretienProfessionnel\EntretienProfessionnelFormAwareTrait; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneFormAwareTrait; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationFormAwareTrait; use Application\Service\Agent\AgentServiceAwareTrait; use Application\Service\Configuration\ConfigurationServiceAwareTrait; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneServiceAwareTrait; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationServiceAwareTrait; use Application\Service\EntretienProfessionnel\EntretienProfessionnelServiceAwareTrait; use Application\Service\Export\EntretienProfessionnel\EntretienProfessionnelPdfExporter; use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait; Loading @@ -30,12 +33,14 @@ use Zend\Http\Request; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; class EntretienProfessionnelController extends AbstractActionController { class EntretienProfessionnelController extends AbstractActionController { use DateTimeAwareTrait; use AgentServiceAwareTrait; use ConfigurationServiceAwareTrait; use EntretienProfessionnelServiceAwareTrait; use EntretienProfessionnelCampagneServiceAwareTrait; use EntretienProfessionnelObservationServiceAwareTrait; use MailingServiceAwareTrait; use ParcoursDeFormationServiceAwareTrait; use UserServiceAwareTrait; Loading @@ -45,6 +50,7 @@ class EntretienProfessionnelController extends AbstractActionController { use EntretienProfessionnelFormAwareTrait; use EntretienProfessionnelCampagneFormAwareTrait; use EntretienProfessionnelObservationFormAwareTrait; use FormulaireServiceAwareTrait; use FormulaireInstanceServiceAwareTrait; Loading Loading @@ -77,7 +83,7 @@ class EntretienProfessionnelController extends AbstractActionController { // ne pas dupliquer les entretiens (si il existe alors on l'affiche) $entretien = null; if ($campagne !== null AND $agent !== null) $entretien = $this->getEntretienProfessionnelService()->getEntretienProfessionnelByAgentAndCampagne($agent, $campagne); if ($campagne !== null and $agent !== null) $entretien = $this->getEntretienProfessionnelService()->getEntretienProfessionnelByAgentAndCampagne($agent, $campagne); if ($entretien !== null) return $this->redirect()->toRoute('entretien-professionnel/afficher', ["campagne" => $campagne->getId()], [], true); $entretien = new EntretienProfessionnel(); Loading Loading @@ -281,7 +287,7 @@ class EntretienProfessionnelController extends AbstractActionController { if ($data["reponse"] === "non") { $validation = $this->getValidationInstanceService()->createValidation($validationType, $entretien, "Refus"); } if ($validation !== null AND $entretien !== null) { if ($validation !== null and $entretien !== null) { switch ($type) { case 'Agent' : $entretien->setValidationAgent($validation); Loading Loading @@ -446,4 +452,100 @@ class EntretienProfessionnelController extends AbstractActionController { } return $vm; } /** OBSERVATION ***************************************************************************************************/ public function ajouterObservationAction() { $entretien = $this->getEntretienProfessionnelService()->getRequestedEntretienProfessionnel($this); $observation = new EntretienProfessionnelObservation(); $observation->setEntretien($entretien); $form = $this->getEntretienProfessionnelObservationForm(); $form->setAttribute('action', $this->url()->fromRoute('entretien-professionnel/observation/ajouter', ['entretien-professionnel' => $entretien->getId()], [], true)); $form->bind($observation); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getEntretienProfessionnelObservationService()->create($observation); } } $vm = new ViewModel(); $vm->setTemplate('application/entretien-professionnel/observation-form'); $vm->setVariables([ 'title' => "Ajout d'une observation", 'form' => $form, ]); return $vm; } public function modifierObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); $form = $this->getEntretienProfessionnelObservationForm(); $form->setAttribute('action', $this->url()->fromRoute('entretien-professionnel/observation/modifier', ['observation' => $observation->getId()], [], true)); $form->bind($observation); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getEntretienProfessionnelObservationService()->update($observation); } } $vm = new ViewModel(); $vm->setTemplate('application/default/default-form'); $vm->setVariables([ 'title' => "Modification d'une observation", 'form' => $form, ]); return $vm; } public function historiserObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); $this->getEntretienProfessionnelObservationService()->historise($observation); return $this->redirect()->toRoute('entretien-professionnel/renseigner', ['entretien-professionnel' => $observation->getEntretien()->getId()], ['fragment' => 'avis'], true); } public function restaurerObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); $this->getEntretienProfessionnelObservationService()->restore($observation); return $this->redirect()->toRoute('entretien-professionnel/renseigner', ['entretien-professionnel' => $observation->getEntretien()->getId()], ['fragment' => 'avis'], true); } public function detruireObservationAction() { $observation = $this->getEntretienProfessionnelObservationService()->getRequestedEntretienProfessionnelObservation($this); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") $this->getEntretienProfessionnelObservationService()->delete($observation); exit(); } $vm = new ViewModel(); if ($observation !== null) { $vm->setTemplate('application/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de l'observation", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('entretien-professionnel/observation/detruire', ["observation" => $observation->getId()], [], true), ]); } return $vm; } }
module/Application/src/Application/Controller/EntretienProfessionnelControllerFactory.php +11 −0 Changes for module/Application/src/Application/Controller/EntretienProfessionnelControllerFactory.php: 11 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -4,9 +4,11 @@ namespace Application\Controller; use Application\Form\EntretienProfessionnel\EntretienProfessionnelForm; use Application\Form\EntretienProfessionnelCampagne\EntretienProfessionnelCampagneForm; use Application\Form\EntretienProfessionnelObservation\EntretienProfessionnelObservationForm; use Application\Service\Agent\AgentService; use Application\Service\Configuration\ConfigurationService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelCampagneService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelObservationService; use Application\Service\EntretienProfessionnel\EntretienProfessionnelService; use Application\Service\ParcoursDeFormation\ParcoursDeFormationService; use Application\Service\Structure\StructureService; Loading @@ -29,6 +31,7 @@ class EntretienProfessionnelControllerFactory { * @var ConfigurationService $configurationService * @var EntretienProfessionnelService $entretienProfesionnelService * @var EntretienProfessionnelCampagneService $entretienProfesionnelCampagneService * @var EntretienProfessionnelObservationService $entretienProfessionnelObservationService * @var FormulaireService $formulaireService * @var FormulaireInstanceService $formulaireInstanceService * @var MailingService $mailingService Loading @@ -42,6 +45,7 @@ class EntretienProfessionnelControllerFactory { $configurationService = $container->get(ConfigurationService::class); $entretienProfesionnelService = $container->get(EntretienProfessionnelService::class); $entretienProfesionnelCampagneService = $container->get(EntretienProfessionnelCampagneService::class); $entretienProfessionnelObservationService = $container->get(EntretienProfessionnelObservationService::class); $formulaireService = $container->get(FormulaireService::class); $formulaireInstanceService = $container->get(FormulaireInstanceService::class); $mailingService = $container->get(MailingService::class); Loading @@ -53,9 +57,11 @@ class EntretienProfessionnelControllerFactory { /** * @var EntretienProfessionnelForm $entretienProfessionnelForm * @var EntretienProfessionnelCampagneForm $campagneForm * @var EntretienProfessionnelObservationForm $observationForm */ $entretienProfessionnelForm = $container->get('FormElementManager')->get(EntretienProfessionnelForm::class); $campagneForm = $container->get('FormElementManager')->get(EntretienProfessionnelCampagneForm::class); $observationForm = $container->get('FormElementManager')->get(EntretienProfessionnelObservationForm::class); /* @var PhpRenderer $renderer */ $renderer = $container->get('ViewRenderer'); Loading @@ -63,11 +69,13 @@ class EntretienProfessionnelControllerFactory { /** @var EntretienProfessionnelController $controller */ $controller = new EntretienProfessionnelController(); $controller->setRenderer($renderer); $controller->setAgentService($agentService); $controller->setUserService($userService); $controller->setConfigurationService($configurationService); $controller->setEntretienProfessionnelService($entretienProfesionnelService); $controller->setEntretienProfessionnelCampagneService($entretienProfesionnelCampagneService); $controller->setEntretienProfessionnelObservationService($entretienProfessionnelObservationService); $controller->setFormulaireInstanceService($formulaireInstanceService); $controller->setParcoursDeFormationService($parcoursDeFormationService); $controller->setValidationInstanceService($validationInstanceService); Loading @@ -75,8 +83,11 @@ class EntretienProfessionnelControllerFactory { $controller->setFormulaireService($formulaireService); $controller->setMailingService($mailingService); $controller->setStructureService($structureService); $controller->setEntretienProfessionnelForm($entretienProfessionnelForm); $controller->setEntretienProfessionnelCampagneForm($campagneForm); $controller->setEntretienProfessionnelObservationForm($observationForm); return $controller; } }
module/Application/src/Application/Entity/Db/EntretienProfessionnel.php +17 −0 Changes for module/Application/src/Application/Entity/Db/EntretienProfessionnel.php: 17 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Application\Entity\Db; use Autoform\Entity\Db\FormulaireInstance; use DateTime; use Doctrine\Common\Collections\ArrayCollection; use UnicaenApp\Exception\RuntimeException; use UnicaenUtilisateur\Entity\Db\User; use UnicaenUtilisateur\Entity\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\HistoriqueAwareTrait; Loading Loading @@ -194,6 +195,22 @@ class EntretienProfessionnel implements HistoriqueAwareInterface { return $this; } /** * @return EntretienProfessionnelObservation */ public function getObservationActive() { $observation = null; /** @var EntretienProfessionnelObservation $obs */ foreach ($this->observations as $obs) { if ($obs->estNonHistorise()) { if ($observation !== null) throw new RuntimeException("Plusieurs observations actives pour l'entretien #".$this->id, 0, null); $observation = $obs; } } return $observation; } /** VALIDATION ****************************************************************************************************/ /** Loading
module/Application/src/Application/Form/EntretienProfessionnelObservation/EntretienProfessionnelObservationForm.php 0 → 100644 +59 −0 Changes for module/Application/src/Application/Form/EntretienProfessionnelObservation/EntretienProfessionnelObservationForm.php: 59 added lines, 0 removed lines. Original line number Diff line number Diff line <?php namespace Application\Form\EntretienProfessionnelObservation; use Zend\Form\Element\Button; use Zend\Form\Element\Textarea; use Zend\Form\Form; class EntretienProfessionnelObservationForm extends Form { public function init() { // entretien $this->add([ 'name' => 'obs-entretien', 'type' => Textarea::class, 'options' => [ 'label' => "Observation sur l'entretien : ", 'label_attributes' => [ 'class' => 'control-label', ], ], 'attributes' => [ 'id' => 'obs-entretien', 'class' => 'type2 form-control', ] ]); // perspective $this->add([ 'name' => 'obs-perspective', 'type' => Textarea::class, 'options' => [ 'label' => "Observation sur les perspectives : ", 'label_attributes' => [ 'class' => 'control-label', ], ], 'attributes' => [ 'id' => 'obs-perspective', 'class' => 'type2 form-control', ] ]); // button $this->add([ 'type' => Button::class, 'name' => 'submit', 'options' => [ 'label' => '<i class="fas fa-save"></i> Ajouter', 'label_options' => [ 'disable_html_escape' => true, ], ], 'attributes' => [ 'type' => 'submit', 'class' => 'btn btn-primary', ], ]); } } No newline at end of file