Commit c4e1ff60 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Début agent forcé sans obligation d'ep

parent cc703fdb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
Version 4.0.0 (18/10/2023)
Version 4.0.1 (18/10/2023)
====

Évolution
+58 −0
Original line number Diff line number Diff line
Version 4.1.0 (xx/xx/2023)
====

Évolution
---


Modification en BD
---

```postgresql
create table entretienprofessionnel_agent_force_sansobligation
(
    id                    serial      not null
        constraint entretienprofessionnel_agent_force_sansobligation_pk
            primary key,
    agent_id              varchar(40) not null
        constraint ep_agent_force_sansobligation_agent_c_individu_fk
            references agent
            on delete cascade,
    campagne_id           integer     not null
        constraint ep_agent_force_sansobligation_campagne_id_fk
            references entretienprofessionnel_campagne
            on delete cascade,
    raison                text,
    histo_creation        timestamp   not null,
    histo_createur_id     integer     not null
        constraint ep_agent_force_sansobligation_unicaen_utilisateur_user_id_fk
            references unicaen_utilisateur_user,
    histo_modification    timestamp,
    histo_modificateur_id integer
        constraint ep_agent_force_sansobligation_unicaen_utilisateur_user_id_fk2
            references unicaen_utilisateur_user,
    histo_destruction     timestamp,
    histo_destructeur_id  integer
        constraint ep_agent_force_sansobligation_unicaen_utilisateur_user_id_fk3
            references unicaen_utilisateur_user
);
comment on table entretienprofessionnel_agent_force_sansobligation is 'Table listant les agents pour lesquels on a forcé le fait qu''ils n''avait pas d''obligation d''entretien professionnel';
```

Evolution des librairies
---



```bash
```

Ou réinstalle des libraires
```bash
rm -fr vendor
rm -fr composer.lock
composer install
```

Evolution des macros et templates
---
+0 −1
Original line number Diff line number Diff line
@@ -365,7 +365,6 @@ return [
            '975_logos'                 => 'css/logos.css',
            '976_environnement'         => 'css/environnement.css',
            '977_app' => 'css/app.css',
            '978_print' => 'css/print.css',
            '999_local' => 'css/local.css',
        ],
    ],
+189 −0
Original line number Diff line number Diff line
<?php

namespace EntretienProfessionnel;

use EntretienProfessionnel\Controller\AgentForceSansObligationController;
use EntretienProfessionnel\Controller\AgentForceSansObligationControllerFactory;
use EntretienProfessionnel\Form\AgentForceSansObligation\AgentForceSansObligationForm;
use EntretienProfessionnel\Form\AgentForceSansObligation\AgentForceSansObligationFormFactory;
use EntretienProfessionnel\Form\AgentForceSansObligation\AgentForceSansObligationHydrator;
use EntretienProfessionnel\Form\AgentForceSansObligation\AgentForceSansObligationHydratorFactory;
use EntretienProfessionnel\Provider\Privilege\AgentforcesansobligationPrivileges;
use EntretienProfessionnel\Service\AgentForceSansObligation\AgentForceSansObligationService;
use EntretienProfessionnel\Service\AgentForceSansObligation\AgentForceSansObligationServiceFactory;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenPrivilege\Guard\PrivilegeController;

return [
    'bjyauthorize' => [
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => AgentForceSansObligationController::class,
                    'action' => [
                        'index',
                    ],
                    'privileges' => [
                        AgentforcesansobligationPrivileges::AGENTFORCESANSOBLIGATION_INDEX,
                    ],
                ],
                [
                    'controller' => AgentForceSansObligationController::class,
                    'action' => [
                        'afficher',
                    ],
                    'privileges' => [
                        AgentforcesansobligationPrivileges::AGENTFORCESANSOBLIGATION_AFFICHER,
                    ],
                ],
                [
                    'controller' => AgentForceSansObligationController::class,
                    'action' => [
                        'ajouter',
                    ],
                    'privileges' => [
                        AgentforcesansobligationPrivileges::AGENTFORCESANSOBLIGATION_AJOUTER,
                    ],
                ],
                [
                    'controller' => AgentForceSansObligationController::class,
                    'action' => [
                        'modifier',
                    ],
                    'privileges' => [
                        AgentforcesansobligationPrivileges::AGENTFORCESANSOBLIGATION_MODIFIER,
                    ],
                ],
                [
                    'controller' => AgentForceSansObligationController::class,
                    'action' => [
                        'historiser',
                        'restaurer',
                    ],
                    'privileges' => [
                        AgentforcesansobligationPrivileges::AGENTFORCESANSOBLIGATION_HISTORISER,
                    ],
                ],
                [
                    'controller' => AgentForceSansObligationController::class,
                    'action' => [
                        'supprimer',
                    ],
                    'privileges' => [
                        AgentforcesansobligationPrivileges::AGENTFORCESANSOBLIGATION_SUPPRIMER,
                    ],
                ],
            ],
        ],
    ],

    'router' => [
        'routes' => [
            'entretien-professionnel' => [
                'child_routes' => [
                    'agent-force-sans-obligation' => [
                        'type' => Literal::class,
                        'may_terminate' => true,
                        'options' => [
                            'route' => '/agent-force-sans-obligation',
                            'defaults' => [
                                /** @see AgentForceSansObligationController::indexAction() */
                                'controller' => AgentForceSansObligationController::class,
                                'action' => 'index',
                            ],
                        ],
                        'child_routes' => [
                            'ajouter' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route' => '/ajouter',
                                    'defaults' => [
                                        /** @see AgentForceSansObligationController::ajouterAction() */
                                        'action' => 'ajouter',
                                    ],
                                ],
                            ],
                            'afficher' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/afficher/:agent-force-sans-obligation',
                                    'defaults' => [
                                        /** @see AgentForceSansObligationController::afficherAction() */
                                        'action' => 'modifier',
                                    ],
                                ],
                            ],
                            'modifier' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/modifier/:agent-force-sans-obligation',
                                    'defaults' => [
                                        /** @see AgentForceSansObligationController::modifierAction() */
                                        'action' => 'modifier',
                                    ],
                                ],
                            ],
                            'historiser' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/historiser/:agent-force-sans-obligation',
                                    'defaults' => [
                                        /** @see AgentForceSansObligationController::historiserAction() */
                                        'action' => 'historiser',
                                    ],
                                ],
                            ],
                            'restaurer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/restaurer/:agent-force-sans-obligation',
                                    'defaults' => [
                                        /** @see AgentForceSansObligationController::restaurerAction() */
                                        'action' => 'restaurer',
                                    ],
                                ],
                            ],
                            'supprimer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/supprimer/:agent-force-sans-obligation',
                                    'defaults' => [
                                        /** @see AgentForceSansObligationController::supprimerAction() */
                                        'action' => 'supprimer',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],

    'service_manager' => [
        'factories' => [
            AgentForceSansObligationService::class => AgentForceSansObligationServiceFactory::class,
        ],
    ],
    'controllers' => [
        'factories' => [
            AgentForceSansObligationController::class => AgentForceSansObligationControllerFactory::class,
        ],
    ],
    'form_elements' => [
        'factories' => [
            AgentForceSansObligationForm::class => AgentForceSansObligationFormFactory::class
        ],
    ],
    'hydrators' => [
        'factories' => [
            AgentForceSansObligationHydrator::class => AgentForceSansObligationHydratorFactory::class,
        ],
    ],
    'view_helpers' => [
        'factories' => [],
    ],


];
 No newline at end of file
+128 −0
Original line number Diff line number Diff line
<?php

namespace EntretienProfessionnel\Controller;

use EntretienProfessionnel\Entity\Db\AgentForceSansObligation;
use EntretienProfessionnel\Form\AgentForceSansObligation\AgentForceSansObligationFormAwareTrait;
use EntretienProfessionnel\Service\AgentForceSansObligation\AgentForceSansObligationServiceAwareTrait;
use Laminas\Http\Request;
use Laminas\Http\Response;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;


class AgentForceSansObligationController extends AbstractActionController
{
    use AgentForceSansObligationServiceAwareTrait;
    use AgentForceSansObligationFormAwareTrait;

    public function indexAction(): ViewModel
    {
        $agentsForcesSansObligation = $this->getAgentForceSansObligationService()->getAgentsForcesSansObligation('id', 'ASC', true);
        return new ViewModel([
            'agentsForcesSansObligation' => $agentsForcesSansObligation,
        ]);
    }

    public function afficherAction(): ViewModel
    {
        $agentForceSansObligation = $this->getAgentForceSansObligationService()->getRequestedAgentForceSansObligation($this);
        return new ViewModel([
            'agentForceSansObligation' => $agentForceSansObligation,
        ]);
    }

    public function ajouterAction(): ViewModel
    {
        $agentForceSansObligation = new AgentForceSansObligation();
        $form = $this->getAgentForceSansObligationForm();
        $form->setAttribute('action', $this->url()->fromRoute('entretien-professionnel/agent-force-sans-obligation/ajouter', [], [], true));
        $form->bind($agentForceSansObligation);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getAgentForceSansObligationService()->create($agentForceSansObligation);
                exit();
            }
        }

        $vm = new ViewModel([
            'title' => "Ajouter un·e agent·e sans obligation d'entretien professionnel",
            'form' => $form
        ]);
        $vm->setTemplate('default/default-form');
        return $vm;
    }

    public function modifierAction(): ViewModel
    {
        $agentForceSansObligation = $this->getAgentForceSansObligationService()->getRequestedAgentForceSansObligation($this);
        $form = $this->getAgentForceSansObligationForm();
        $form->setAttribute('action', $this->url()->fromRoute('entretien-professionnel/agent-force-sans-obligation/modifier', ['agent-force-sans-obligation' => $agentForceSansObligation->getId()], [], true));
        $form->bind($agentForceSansObligation);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getAgentForceSansObligationService()->update($agentForceSansObligation);
                exit();
            }
        }

        $vm = new ViewModel([
            'title' => "Modifier un·e agent·e sans obligation d'entretien professionnel",
            'form' => $form
        ]);
        $vm->setTemplate('default/default-form');
        return $vm;
    }

    public function historiserAction(): Response
    {
        $agentForceSansObligation = $this->getAgentForceSansObligationService()->getRequestedAgentForceSansObligation($this);
        $this->getAgentForceSansObligationService()->historise($agentForceSansObligation);

        $retour = $this->params()->fromQuery('retour');
        if ($retour) return $this->redirect()->toUrl($retour);
        return $this->redirect()->toRoute('entretien-professionnel/agent-force-sans-obligation', [], [], true);
    }

    public function restaurerAction(): Response
    {
        $agentForceSansObligation = $this->getAgentForceSansObligationService()->getRequestedAgentForceSansObligation($this);
        $this->getAgentForceSansObligationService()->restore($agentForceSansObligation);

        $retour = $this->params()->fromQuery('retour');
        if ($retour) return $this->redirect()->toUrl($retour);
        return $this->redirect()->toRoute('entretien-professionnel/agent-force-sans-obligation', [], [], true);
    }

    public function supprimerAction(): ViewModel
    {
        $agentForceSansObligation = $this->getAgentForceSansObligationService()->getRequestedAgentForceSansObligation($this);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            if ($data["reponse"] === "oui") $this->getAgentForceSansObligationService()->delete($agentForceSansObligation);
            exit();
        }

        $vm = new ViewModel();
        if ($agentForceSansObligation !== null) {
            $vm->setTemplate('default/confirmation');
            $vm->setVariables([
                'title' => "Suppression du forçage pour [" . $agentForceSansObligation->getAgent()->getDenomination() . "] et la campagne [" . $agentForceSansObligation->getCampagne()->getAnnee() . "]",
                'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
                'action' => $this->url()->fromRoute('entretien-professionnel/agent-force-sans-obligation/supprimer', ["agent-force-sans-obligation" => $agentForceSansObligation->getId()], [], true),
            ]);
        }
        return $vm;
    }
}
 No newline at end of file
Loading