Commit ed76f3ff authored by joriot221's avatar joriot221
Browse files

-panel administration établissement

-ajout/modification/suppression d'etablissement presque terminé
-correction mineur de typo de periode
-ajout d'un privilège pour etablissement
parent 4a6482c2
Loading
Loading
Loading
Loading
+2 −0
Changes for data/privileges.php: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -338,6 +338,8 @@ return [
            'annees-visualisation'           => 'Années - Visualisation',
            'periodes-edition'               => 'Périodes - Édition',
            'periodes-visualisation'         => 'Périodes - Visualisation',
            'etablissement-edition'          => 'Établissement - Édition',
            'etablissement-visualisation'    => 'Établissement - Visualisation',
        ],
    ],

+10 −1
Changes for module/Application/config/administration.config.php: 10 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -152,6 +152,14 @@ return [
                                'order'          => 84,
                                'border - color' => '#111',
                            ],
                            'gestion-etablissement'   => [
                                'label'          => 'Gestion des etablissements',
                                'icon'           => 'glyphicon glyphicon - list-alt',
                                'route'          => 'etablissement',
                                'resource'       => PrivilegeController::getResourceId('Application\Controller\Etablissement', 'index'),
                                'order'          => 85,
                                'border - color' => '#111',
                            ],
                            'gestion-intervenant'     => [
                                'label'          => 'Gestion intervenants (Statuts, PJ,  etc...)',
                                'icon'           => 'glyphicon glyphicon - list-alt',
@@ -236,7 +244,8 @@ return [
                                     'administration-intervenant',
                                     'administration-referentiel-commun',
                                     'administration-nomenclature-rh',
                                     'administration-periode',],
                                     'administration-periode',
                                     'administration-etablissement',],
                    'privileges' => [
                        Privileges::IMPORT_ECARTS,
                        Privileges::IMPORT_MAJ,
+30 −7
Changes for module/Application/config/etablissement.config.php: 30 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@

namespace Application;

use UnicaenAuth\Guard\PrivilegeController;
use Application\Provider\Privilege\Privileges;

return [
    'router'          => [
        'routes' => [
@@ -37,18 +40,25 @@ return [
                            ],
                        ],
                    ],
                    'default'   => [
                    'saisie'    => [
                        'type'          => 'Segment',
                        'options'       => [
                            'route'       => '/:action[/:id]',
                            'constraints' => [
                                'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'id'     => '[0-9]*',
                            'route'    => '/saisie[/:etablissement]',
                            'defaults' => [
                                'action' => 'saisie',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'supprimer' => [
                        'type'          => 'Segment',
                        'options'       => [
                            'route'    => '/supprimer/:etablissement',
                            'defaults' => [
                                'action' => 'index',
                                'action' => 'supprimer',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                ],
            ],
@@ -59,10 +69,23 @@ return [
            'BjyAuthorize\Guard\Controller' => [
                [
                    'controller' => 'Application\Controller\Etablissement',
                    'action'     => ['index', 'choisir', 'recherche', 'voir', 'apercevoir'],
                    'action'     => ['choisir', 'recherche', 'voir', 'apercevoir',],
                    'roles'      => ['user']],
            ],
            PrivilegeController::class      => [
                [
                    'controller' => 'Application\Controller\Etablissement',
                    'action'     => ['index'],
                    'privileges' => [Privileges::PARAMETRES_ETABLISSEMENT_VISUALISATION],
                ],
                [
                    'controller' => 'Application\Controller\Etablissement',
                    'action'     => ['saisie', 'supprimer'],
                    'privileges' => [Privileges::PARAMETRES_ETABLISSEMENT_EDITION],
                ],
            ],
        ],

    ],
    'controllers'     => [
        'invokables' => [
+59 −3
Changes for module/Application/src/Controller/EtablissementController.php: 59 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -2,9 +2,12 @@

namespace Application\Controller;

use Application\Form\Etablissement\Traits\EtablissementSaisieFormAwareTrait;
use Application\Service\Traits\EtablissementServiceAwareTrait;
use RuntimeException;
use LogicException;
use Laminas\View\Model\JsonModel;
use UnicaenApp\View\Model\MessengerViewModel;

/**
 * Description of EtablissementController
@@ -15,14 +18,22 @@ class EtablissementController extends AbstractController
{
    use \Application\Service\Traits\ContextServiceAwareTrait;
    use \Application\Service\Traits\EtablissementServiceAwareTrait;
    use EtablissementSaisieFormAwareTrait;
    use EtablissementServiceAwareTrait;


    public function indexAction()
    {
        $url = $this->url()->fromRoute('etablissement/default', ['action' => 'choisir']);
        return $this->redirect()->toUrl($url);
//        $url = $this->url()->fromRoute('etablissement/default', ['action' => 'choisir']);
//        return $this->redirect()->toUrl($url);
        $query          = $this->em()->createQuery('SELECT e FROM Application\Entity\Db\Etablissement e WHERE e.histoDestruction is null');
        $etablissements = $query->getResult();

        return compact('etablissements');
    }



    /**
     *
     * @return \Laminas\View\Model\ViewModel
@@ -46,6 +57,7 @@ class EtablissementController extends AbstractController
            $form->setData($data);
            if ($form->isValid()) {
                $url = $this->url()->fromRoute('etablissement/default', ['action' => 'voir', 'id' => $form->get('etablissement')->getValueId()]);

                return $this->redirect()->toUrl($url);
            }
        }
@@ -53,6 +65,8 @@ class EtablissementController extends AbstractController
        return compact('form');
    }



    public function rechercheAction()
    {
        $this->em()->getFilters()->enable('historique')->init([
@@ -66,7 +80,8 @@ class EtablissementController extends AbstractController
        $entities = $this->getServiceEtablissement()->finderByLibelle($term)->getQuery()->execute();
        $result   = [];

        foreach ($entities as $item) { /* @var $item \Application\Entity\Db\Etablissement */
        foreach ($entities as $item) {
            /* @var $item \Application\Entity\Db\Etablissement */
            $result[] = [
                'id'    => $item->getId(),  // identifiant unique de l'item
                'label' => (string)$item,   // libellé de l'item
@@ -77,6 +92,8 @@ class EtablissementController extends AbstractController
        return new JsonModel($result);
    }



    public function voirAction()
    {
        if (!($id = $this->params()->fromRoute('id', $this->params()->fromPost('id')))) {
@@ -91,6 +108,8 @@ class EtablissementController extends AbstractController
        return compact('etablissement', 'title');
    }



    public function apercevoirAction()
    {
        if (!($id = $this->params()->fromRoute('id', $this->params()->fromPost('id')))) {
@@ -106,4 +125,41 @@ class EtablissementController extends AbstractController

        return $viewModel;
    }



    public function saisieAction()
    {
        $etablissement = $this->getEvent()->getParam('etablissement');
        $form          = $this->getFormEtablissementSaisie();

        if (empty($etablissement)) {
            $title         = "Création d'un nouvel établissement";
            $etablissement = $this->getServiceEtablissement()->newEntity();
        } else {
            $title = "Edition d'un établissement";
        }
        $form->bindRequestSave($etablissement, $this->getRequest(), function () use ($etablissement, $form) {
            try {
                $this->getServiceEtablissement()->save($etablissement);
                $this->flashMessenger()->addSuccessMessage(
                    "Ajout réussis"
                );
            } catch (Exception $e) {
                $this->flashMessenger()->addErrorMessage($this->translate($e));
            }
        });

        return compact('form', 'title');
    }



    public function supprimerAction()
    {
        $etablissement = $this->getEvent()->getParam('etablissement');
        $this->getServiceEtablissement()->delete($etablissement, false);

        return new MessengerViewModel();
    }
}
 No newline at end of file
+102 −0
Changes for module/Application/src/Form/Etablissement/EtablissementSaisieForm.php: 102 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Form\Etablissement;

use Application\Form\AbstractForm;
use Application\Hydrator\GenericHydrator;
use Application\Service\Traits\SourceServiceAwareTrait;
use Laminas\Form\Element\Csrf;


/**
 * Description of EtablissementForm
 *
 * @author Florian JORIOT <florian.joriot at unicaen.fr>
 */
class EtablissementSaisieForm extends AbstractForm
{
    use SourceServiceAwareTrait;

    protected $hydratorElements = [
        'id'           => ['type' => 'int'],
        'departement'  => ['type' => 'string'],
        'localisation' => ['type' => 'string'],
        'libelle'      => ['type' => 'string'],
    ];



    public function init()
    {

        $this->setAttribute('action', $this->getCurrentUrl());

        $hydrator = new GenericHydrator($this->getServiceSource()->getEntityManager(), $this->hydratorElements);
        $this->setHydrator($hydrator);

        $this->setAttribute('action', $this->getCurrentUrl());

        $this->add([
            'name' => 'id',
            'type' => 'Hidden',
        ]);

        $this->add([
            'name'    => 'departement',
            'options' => [
                'label' => "Département de l'établissement",
            ],
            'type'    => 'Text',
        ]);

        $this->add([
            'name'    => 'localisation',
            'options' => [
                'label' => "Localisation de l'établissement",
            ],
            'type'    => 'Text',
        ]);
        $this->add([
            'name'    => 'libelle',
            'options' => [
                'label' => "Nom de l'établissement",
            ],
            'type'    => 'Text',
        ]);

        $this->add(new Csrf('security'));

        $this->add([
            'name'       => 'submit',
            'type'       => 'Submit',
            'attributes' => [
                'value' => "Enregistrer",
                'class' => 'btn btn-primary',
            ],
        ]);

        return $this;
    }



    /**
     * Should return an array specification compatible with
     * {@link Laminas\InputFilter\Factory::createInputFilter()}.
     *
     * @return array
     */
    public function getInputFilterSpecification()
    {
        return [
            'libelle' => [
                'required' => true,
            ],

            'departement' => [
                'required' => true,
            ],
        ];
    }

}
Loading