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

Ajout des informations sur le poste associé à une fiche de poste

parent 9c6ebe29
Loading
Loading
Loading
Loading
+31 −1
Changes for documentation/220_DB_EMC2_FICHEPOSTE.sql: 31 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -150,6 +150,33 @@ create table ficheposte_validation
    constraint ficheposte_validations_pk primary key (ficheposte_id, validation_id)
);

create table ficheposte_poste
(
    id                    serial
        constraint ficheposte_poste_pk
            primary key,
    ficheposte_id         integer
        constraint ficheposte_poste_ficheposte_id_fk
            references ficheposte
            on delete cascade,
    referentiel           varchar(1024),
    intitule_poste        varchar(1024),
    poste_id              varchar(1024),
    histo_creation        timestamp default now() not null,
    histo_createur_id     integer   default 0     not null
        constraint ficheposte_poste_unicaen_utilisateur_user_id_fk
            references unicaen_utilisateur_user,
    histo_modification    timestamp,
    histo_modificateur_id integer
        constraint ficheposte_poste_unicaen_utilisateur_user_id_fk2
            references unicaen_utilisateur_user,
    histo_destruction     timestamp,
    histo_destructeur_id  integer
        constraint ficheposte_poste_unicaen_utilisateur_user_id_fk3
            references unicaen_utilisateur_user
);



------------------------------------------------------------------------------------------------------------------------
-- PRIVILEGE -----------------------------------------------------------------------------------------------------------
@@ -169,7 +196,10 @@ WITH d(code, lib, ordre) AS (
    SELECT 'ficheposte_etat', 'Modifier l''état', 200 UNION
    SELECT 'ficheposte_valider_responsable', 'Valider en tant que responsable', 250 UNION
    SELECT 'ficheposte_valider_agent', 'Valider en tant qu''agent', 260 UNION
    SELECT 'ficheposte_graphique', 'Afficher les graphiques de compatibilité', 300
    SELECT 'ficheposte_graphique', 'Afficher les graphiques de compatibilité', 300 UNION

    SELECT 'ficheposte_afficher_poste', 'Afficher les informations sur le poste', 100 UNION
    SELECT 'ficheposte_modifier_poste', 'Modifier les informations sur le poste', 110
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
+26 −0
Changes for documentation/release/3.1.4.md: 26 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@

* Retrait de mention UniCaen dans la fiche de poste pour des termes plus généraux
* Ajout de la raison d'être sur les fiches metiers
* Ajout des informations sur le poste associé à une fiche de poste
* Amélioration de la récupération des corps/correspondances/gardes

**Modifications de la base de donnée**
@@ -26,6 +27,31 @@ alter table unicaen_renderer_template add namespace varchar(1024);
-- ajout des ''raison d être'' aux fiches metier 
alter table fichemetier add raison text;

-- ajout des informations de gestion de poste (TABLE)
create table ficheposte_poste
(
    id                      serial constraint ficheposte_poste_pk primary key,
    ficheposte_id           integer constraint ficheposte_poste_ficheposte_id_fk references ficheposte on delete cascade,
    referentiel             varchar(1024),
    intitule_poste          varchar(1024),
    poste_id                varchar(1024),
    histo_creation          timestamp default now() not null,
    histo_createur_id       integer   default 0     not null constraint ficheposte_poste_unicaen_utilisateur_user_id_fk references unicaen_utilisateur_user,
    histo_modification      timestamp,
    histo_modificateur_id   integer constraint ficheposte_poste_unicaen_utilisateur_user_id_fk2 references unicaen_utilisateur_user,
    histo_destruction       timestamp,
    histo_destructeur_id    integer constraint ficheposte_poste_unicaen_utilisateur_user_id_fk3 references unicaen_utilisateur_user
);
-- ajout des informations de gestion de poste (PRIVILEGES)
INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
    SELECT 'ficheposte_afficher_poste', 'Afficher les informations sur le poste', 100 UNION
    SELECT 'ficheposte_modifier_poste', 'Modifier les informations sur le poste', 110
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN unicaen_privilege_categorie cp ON cp.CODE = 'ficheposte';

-- modélisation concrete de la notion de plan de formation 
create table formation_plan_formation
(
+28 −0
Changes for module/Application/config/merged/fiche-poste.config.php: 28 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -22,6 +22,10 @@ use Application\Form\Expertise\ExpertiseForm;
use Application\Form\Expertise\ExpertiseFormFactory;
use Application\Form\Expertise\ExpertiseHydrator;
use Application\Form\Expertise\ExpertiseHydratorFactory;
use Application\Form\Poste\PosteForm;
use Application\Form\Poste\PosteFormFactory;
use Application\Form\Poste\PosteHydrator;
use Application\Form\Poste\PosteHydratorFactory;
use Application\Form\Rifseep\RifseepForm;
use Application\Form\Rifseep\RifseepFormFactory;
use Application\Form\Rifseep\RifseepHydrator;
@@ -40,6 +44,8 @@ use Application\Service\Expertise\ExpertiseService;
use Application\Service\Expertise\ExpertiseServiceFactory;
use Application\Service\FichePoste\FichePosteService;
use Application\Service\FichePoste\FichePosteServiceFactory;
use Application\Service\Poste\PosteService;
use Application\Service\Poste\PosteServiceFactory;
use Application\Service\SpecificitePoste\SpecificitePosteService;
use Application\Service\SpecificitePoste\SpecificitePosteServiceFactory;
use Application\View\Helper\FichePosteGraphViewHelper;
@@ -113,6 +119,13 @@ return [
                    'privileges' => FichePostePrivileges::FICHEPOSTE_AJOUTER,
                    'assertion'  => FichePosteAssertion::class,
                ],
                [
                    'controller' => FichePosteController::class,
                    'action' => [
                        'modifier-information-poste',
                    ],
                    'privileges' => FichePostePrivileges::FICHEPOSTE_MODIFIER_POSTE,
                ],
                [
                    'controller' => FichePosteController::class,
                    'action' => [
@@ -381,6 +394,18 @@ return [
                            ],
                        ],
                    ],
                    /** @see FichePosteController::modifierInformationPosteAction() */
                    'modifier-information-poste' => [
                        'type'  => Segment::class,
                        'may_terminate' => true,
                        'options' => [
                            'route'    => '/modifier-information-poste/:fiche-poste',
                            'defaults' => [
                                'controller' => FichePosteController::class,
                                'action'     => 'modifier-information-poste',
                            ],
                        ],
                    ],
                    'ajouter-fiche-metier' => [
                        'type'  => Segment::class,
                        'may_terminate' => true,
@@ -571,6 +596,7 @@ return [
            CompetencesRetireesService::class => CompetencesRetireesServiceFactory::class,
            ExpertiseService::class => ExpertiseServiceFactory::class,
            FichePosteService::class => FichePosteServiceFactory::class,
            PosteService::class => PosteServiceFactory::class,
            SpecificitePosteService::class => SpecificitePosteServiceFactory::class,
        ],
    ],
@@ -585,6 +611,7 @@ return [
            AssocierPosteForm::class => AssocierPosteFormFactory::class,
            AssocierTitreForm::class => AssocierTitreFormFactory::class,
            ExpertiseForm::class => ExpertiseFormFactory::class,
            PosteForm::class => PosteFormFactory::class,
            SpecificitePosteForm::class => SpecificitePosteFormFactory::class,
            RifseepForm::class => RifseepFormFactory::class,
        ],
@@ -598,6 +625,7 @@ return [
            AssocierPosteHydrator::class => AssocierPosteHydratorFactory::class,
            AssocierTitreHydrator::class => AssocierTitreHydratorFactory::class,
            ExpertiseHydrator::class => ExpertiseHydratorFactory::class,
            PosteHydrator::class => PosteHydratorFactory::class,
            RifseepHydrator::class => RifseepHydratorFactory::class,
        ],
    ],
+42 −0
Changes for module/Application/src/Application/Controller/FichePosteController.php: 42 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,11 +9,13 @@ use Application\Entity\Db\FicheMetier;
use Application\Entity\Db\FichePoste;
use Application\Entity\Db\FicheposteActiviteDescriptionRetiree;
use Application\Entity\Db\FicheTypeExterne;
use Application\Entity\Db\Poste;
use Application\Entity\Db\SpecificitePoste;
use Application\Form\AjouterFicheMetier\AjouterFicheMetierFormAwareTrait;
use Application\Form\AssocierTitre\AssocierTitreForm;
use Application\Form\AssocierTitre\AssocierTitreFormAwareTrait;
use Application\Form\Expertise\ExpertiseFormAwareTrait;
use Application\Form\Poste\PosteFormAwareTrait;
use Application\Form\Rifseep\RifseepFormAwareTrait;
use Application\Form\SpecificitePoste\SpecificitePosteForm;
use Application\Form\SpecificitePoste\SpecificitePosteFormAwareTrait;
@@ -30,6 +32,7 @@ use Application\Service\FicheMetier\FicheMetierServiceAwareTrait;
use Application\Service\FichePoste\FichePosteServiceAwareTrait;
use Application\Service\Notification\NotificationServiceAwareTrait;
use Application\Service\ParcoursDeFormation\ParcoursDeFormationServiceAwareTrait;
use Application\Service\Poste\PosteServiceAwareTrait;
use Application\Service\SpecificitePoste\SpecificitePosteServiceAwareTrait;
use DateTime;
use Mpdf\MpdfException;
@@ -63,6 +66,7 @@ class FichePosteController extends AbstractActionController {
    use FichePosteServiceAwareTrait;
    use NotificationServiceAwareTrait;
    use ParcoursDeFormationServiceAwareTrait;
    use PosteServiceAwareTrait;
    use RenduServiceAwareTrait;
    use StructureServiceAwareTrait;
    use SpecificitePosteServiceAwareTrait;
@@ -72,6 +76,7 @@ class FichePosteController extends AbstractActionController {
    use AjouterFicheMetierFormAwareTrait;
    use AssocierTitreFormAwareTrait;
    use ExpertiseFormAwareTrait;
    use PosteFormAwareTrait;
    use RifseepFormAwareTrait;
    use SelectionEtatFormAwareTrait;
    use SpecificitePosteFormAwareTrait;
@@ -318,6 +323,43 @@ class FichePosteController extends AbstractActionController {
        }
    }

    /** GESTION DES INFORMATIONS DE POSTE *****************************************************************************/

    public function modifierInformationPosteAction() : ViewModel
    {
        $ficheposte = $this->getFichePosteService()->getRequestedFichePoste($this);

        $create = false;
        /** @var ?Poste $poste */
        $poste = $ficheposte->getPoste();
        if ($ficheposte->getPoste() === null)  {
            $create = true;
            $poste = new Poste();
            $poste->setFicheposte($ficheposte);
        }

        $form = $this->getPosteForm();
        $form->setAttribute('action', $this->url()->fromRoute('fiche-poste/modifier-information-poste', ['fiche-poste' => $ficheposte->getId()], [], true));
        $form->bind($poste);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                if ($create) $this->getPosteService()->create($poste);
                else $this->getPosteService()->update($poste);
            }
        }

        $vm = new ViewModel([
            'title' => "Modifier les informations sur le poste",
            'form' => $form,
        ]);
        $vm->setTemplate('application/default/default-form');
        return $vm;
    }

    /** GESTION DES ETATS DES FICHES POSTES ***************************************************************************/

    public function changerEtatAction() : ViewModel
+17 −1
Changes for module/Application/src/Application/Controller/FichePosteControllerFactory.php: 17 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace Application\Controller;
use Application\Form\AjouterFicheMetier\AjouterFicheMetierForm;
use Application\Form\AssocierTitre\AssocierTitreForm;
use Application\Form\Expertise\ExpertiseForm;
use Application\Form\Poste\PosteForm;
use Application\Form\Rifseep\RifseepForm;
use Application\Form\SpecificitePoste\SpecificitePosteForm;
use Application\Service\Activite\ActiviteService;
@@ -17,8 +18,11 @@ use Application\Service\FicheMetier\FicheMetierService;
use Application\Service\FichePoste\FichePosteService;
use Application\Service\Notification\NotificationService;
use Application\Service\ParcoursDeFormation\ParcoursDeFormationService;
use Application\Service\Poste\PosteService;
use Application\Service\SpecificitePoste\SpecificitePosteService;
use Interop\Container\ContainerInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Structure\Service\Structure\StructureService;
use UnicaenEtat\Form\SelectionEtat\SelectionEtatForm;
use UnicaenEtat\Service\Etat\EtatService;
@@ -27,6 +31,12 @@ use UnicaenValidation\Service\ValidationInstance\ValidationInstanceService;

class FichePosteControllerFactory {

    /**
     * @param ContainerInterface $container
     * @return FichePosteController
     * @throws ContainerExceptionInterface
     * @throws NotFoundExceptionInterface
     */
    public function __invoke(ContainerInterface $container) : FichePosteController
    {
        /**
@@ -41,8 +51,9 @@ class FichePosteControllerFactory {
         * @var EtatService $etatService
         * @var ExpertiseService $expertiseService
         * @var NotificationService $notificationService
         * @var SpecificitePosteService $specificitePosteService
         * @var ParcoursDeFormationService $parcoursService
         * @var PosteService $posteService
         * @var SpecificitePosteService $specificitePosteService
         * @var ValidationInstanceService $validationInstanceService
         */
        $agentService = $container->get(AgentService::class);
@@ -57,6 +68,7 @@ class FichePosteControllerFactory {
        $etatService = $container->get(EtatService::class);
        $expertiseService = $container->get(ExpertiseService::class);
        $notificationService = $container->get(NotificationService::class);
        $posteService = $container->get(PosteService::class);
        $specificitePosteService = $container->get(SpecificitePosteService::class);
        $parcoursService = $container->get(ParcoursDeFormationService::class);
        $validationInstanceService = $container->get(ValidationInstanceService::class);
@@ -65,6 +77,7 @@ class FichePosteControllerFactory {
         * @var AjouterFicheMetierForm $ajouterFicheMetierForm
         * @var AssocierTitreForm $associerTitreForm
         * @var ExpertiseForm $expertiseForm
         * @var PosteForm $posteForm
         * @var RifseepForm $rifseepForm
         * @var SelectionEtatForm $selectionEtatForm
         * @var SpecificitePosteForm $specificiftePosteForm
@@ -72,6 +85,7 @@ class FichePosteControllerFactory {
        $ajouterFicheMetierForm = $container->get('FormElementManager')->get(AjouterFicheMetierForm::class);
        $associerTitreForm = $container->get('FormElementManager')->get(AssocierTitreForm::class);
        $expertiseForm = $container->get('FormElementManager')->get(ExpertiseForm::class);
        $posteForm = $container->get('FormElementManager')->get(PosteForm::class);
        $rifseepForm = $container->get('FormElementManager')->get(RifseepForm::class);
        $selectionEtatForm = $container->get('FormElementManager')->get(SelectionEtatForm::class);
        $specificiftePosteForm = $container->get('FormElementManager')->get(SpecificitePosteForm::class);
@@ -93,6 +107,7 @@ class FichePosteControllerFactory {
        $controller->setEtatService($etatService);
        $controller->setExpertiseService($expertiseService);
        $controller->setNotificationService($notificationService);
        $controller->setPosteService($posteService);
        $controller->setSpecificitePosteService($specificitePosteService);
        $controller->setParcoursDeFormationService($parcoursService);
        $controller->setValidationInstanceService($validationInstanceService);
@@ -100,6 +115,7 @@ class FichePosteControllerFactory {
        $controller->setAjouterFicheTypeForm($ajouterFicheMetierForm);
        $controller->setAssocierTitreForm($associerTitreForm);
        $controller->setExpertiseForm($expertiseForm);
        $controller->setPosteForm($posteForm);
        $controller->setRifseepForm($rifseepForm);
        $controller->setSelectionEtatForm($selectionEtatForm);
        $controller->setSpecificitePosteForm($specificiftePosteForm);
Loading