Commit 1d464fd9 authored by metivier's avatar metivier
Browse files

Application/groupe

parent 9619dac8
Loading
Loading
Loading
Loading
+103 −25
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Service\Application\ApplicationGroupeService;
use Application\Service\Application\ApplicationService;
use Application\Service\Application\ApplicationServiceFactory;
use Application\Service\Formation\ApplicationGroupeServiceFactory;
use Application\Service\Application\ApplicationGroupeServiceFactory;
use Application\View\Helper\ApplicationGroupeViewHelper;
use UnicaenPrivilege\Guard\PrivilegeController;
use Zend\Router\Http\Literal;
@@ -42,6 +42,7 @@ return [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'afficher',
                        'afficher-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_AFFICHER,
@@ -52,6 +53,9 @@ return [
                    'action' => [
                        'changer-status',
                        'editer',
                        'modifier-groupe',
                        'historiser-groupe',
                        'restaurer-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_EDITER,
@@ -61,6 +65,7 @@ return [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'creer',
                        'ajouter-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_AJOUTER,
@@ -70,6 +75,7 @@ return [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'effacer',
                        'detruire-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_EFFACER,
@@ -111,6 +117,78 @@ return [
                ],
                'may_terminate' => true,
                'child_routes' => [
                    'groupe' => [
                        'type' => Literal::class,
                        'may_terminate' => false,
                        'options' => [
                            'route' => '/groupe',
                            'defaults' => [
                                'controller' => ApplicationController::class,
                            ],
                        ],
                        'child_routes' => [
                            'afficher' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/afficher/:application-groupe',
                                    'defaults' => [
                                        'controller' => ApplicationController::class,
                                        'action' => 'afficher-groupe',
                                    ],
                                ],
                            ],
                            'ajouter' => [
                                'type' => Literal::class,
                                'options' => [
                                    'route' => '/ajouter',
                                    'defaults' => [
                                        'controller' => ApplicationController::class,
                                        'action' => 'ajouter-groupe',
                                    ],
                                ],
                            ],
                            'editer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/modifier/:application-groupe',
                                    'defaults' => [
                                        'controller' => ApplicationController::class,
                                        'action' => 'modifier-groupe',
                                    ],
                                ],
                            ],
                            'historiser' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/historiser/:application-groupe',
                                    'defaults' => [
                                        'controller' => ApplicationController::class,
                                        'action' => 'historiser-groupe',
                                    ],
                                ],
                            ],
                            'restaurer' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/restaurer/:application-groupe',
                                    'defaults' => [
                                        'controller' => ApplicationController::class,
                                        'action' => 'restaurer-groupe',
                                    ],
                                ],
                            ],
                            'detruire' => [
                                'type' => Segment::class,
                                'options' => [
                                    'route' => '/detruire/:application-groupe',
                                    'defaults' => [
                                        'controller' => ApplicationController::class,
                                        'action' => 'detruire-groupe',
                                    ],
                                ],
                            ],
                        ],
                    ],
                    'afficher' => [
                        'type' => Segment::class,
                        'options' => [
+115 −1
Original line number Diff line number Diff line
@@ -3,9 +3,12 @@
namespace Application\Controller;

use Application\Entity\Db\Application;
use Application\Entity\Db\ApplicationGroupe;
use Application\Form\Application\ApplicationForm;
use Application\Form\Application\ApplicationFormAwareTrait;
use Application\Form\ApplicationGroupe\ApplicationGroupeFormAwareTrait;
use Application\Service\Application\ApplicationServiceAwareTrait;
use Application\Service\Application\ApplicationGroupeServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
@@ -13,16 +16,23 @@ use Zend\View\Model\ViewModel;
class ApplicationController  extends AbstractActionController {
    /** Trait utilisés pour les services */
    use ApplicationServiceAwareTrait;
    use ApplicationGroupeServiceAwareTrait;
    /** Trait utilisées pour les formulaires */
    use ApplicationFormAwareTrait;
    use ApplicationGroupeFormAwareTrait;

    public function indexAction()
    {
        /** @var Application[] $activites */
        /**
         * @var Application[] $activites
         * @var ApplicationGroupe[] $groupes
         */
        $applications = $this->getApplicationService()->getApplications('libelle');
        $groupes = $this->getApplicationGroupeService()->getApplicationsGroupes('libelle');

        return new ViewModel([
            'applications' => $applications,
            'groupes' => $groupes,
        ]);
}

@@ -131,4 +141,108 @@ class ApplicationController extends AbstractActionController {
            'application' => $application,
        ]);
    }

    /** GROUPE ********************************************************************************************************/

    public function ajouterGroupeAction()
    {
        $groupe = new ApplicationGroupe();

        $form = $this->getApplicationGroupeForm();
        $form->setAttribute('action', $this->url()->fromRoute('application/groupe/ajouter',[],[], true));
        $form->bind($groupe);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getApplicationGroupeService()->create($groupe);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Ajout d'un groupe d'application",
            'form' => $form,
        ]);
        return $vm;
    }

    public function afficherGroupeAction()
    {
        $groupe = $this->getApplicationGroupeService()->getRequestedApplicationGroupe($this);

        return new ViewModel([
            'title' => "Affichage du groupe d'application",
            'groupe' => $groupe,
        ]);
    }

    public function modifierGroupeAction()
    {
        $groupe = $this->getApplicationGroupeService()->getRequestedApplicationGroupe($this);

        $form = $this->getApplicationGroupeForm();
        $form->setAttribute('action', $this->url()->fromRoute('application/groupe/editer',[],[], true));
        $form->bind($groupe);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getApplicationGroupeService()->update($groupe);
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/default-form');
        $vm->setVariables([
            'title' => "Modification d'un groupe d'application",
            'form' => $form,
        ]);
        return $vm;
    }

    public function historiserGroupeAction()
    {
        $groupe = $this->getApplicationGroupeService()->getRequestedApplicationGroupe($this);
        $this->getApplicationGroupeService()->historise($groupe);
        return $this->redirect()->toRoute('application', [], ['fragment' => 'groupe'], true);
    }

    public function restaurerGroupeAction()
    {
        $groupe = $this->getApplicationGroupeService()->getRequestedApplicationGroupe($this);
        $this->getApplicationGroupeService()->restore($groupe);
        return $this->redirect()->toRoute('application', [], ['fragment' => 'groupe'], true);
    }

    public function detruireGroupeAction()
    {
        $groupe = $this->getApplicationGroupeService()->getRequestedApplicationGroupe($this);

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

        $vm = new ViewModel();
        if ($groupe !== null) {
            $vm->setTemplate('application/default/confirmation');
            $vm->setVariables([
                'title' => "Suppression du groupe d'application [" . $groupe->getLibelle(). "]",
                'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?",
                'action' => $this->url()->fromRoute('application/groupe/detruire', ["application-groupe" => $groupe->getId()], [], true),
            ]);
        }
        return $vm;
    }
}
 No newline at end of file
+8 −0
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@
namespace Application\Controller;

use Application\Form\Application\ApplicationForm;
use Application\Form\ApplicationGroupe\ApplicationGroupeForm;
use Application\Service\Application\ApplicationGroupeService;
use Application\Service\Application\ApplicationService;
use Interop\Container\ContainerInterface;

@@ -12,18 +14,24 @@ class ApplicationControllerFactory {
    {
        /**
         * @var ApplicationService $applicationService
         * @var ApplicationGroupeService $applicationGroupeService
         */
        $applicationService = $container->get(ApplicationService::class);
        $applicationGroupeService = $container->get(ApplicationGroupeService::class);

        /**
         * @var ApplicationForm $applicationForm
         * @var ApplicationGroupeForm $applicationGroupeForm
         */
        $applicationForm = $container->get('FormElementManager')->get(ApplicationForm::class);
        $applicationGroupeForm = $container->get('FormElementManager')->get(ApplicationGroupeForm::class);

        /** @var ApplicationController $controller */
        $controller = new ApplicationController();
        $controller->setApplicationService($applicationService);
        $controller->setApplicationGroupeService($applicationGroupeService);
        $controller->setApplicationForm($applicationForm);
        $controller->setApplicationGroupeForm($applicationGroupeForm);
        return $controller;
    }
}
 No newline at end of file
+20 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Application\Form\Application;

use Application\Service\Application\ApplicationGroupeServiceAwareTrait;
use Application\Service\Formation\FormationServiceAwareTrait;
use Zend\Form\Element\Button;
use Zend\Form\Element\Select;
@@ -11,6 +12,7 @@ use Zend\InputFilter\Factory;

class ApplicationForm extends Form {
    use FormationServiceAwareTrait;
    use ApplicationGroupeServiceAwareTrait;

    public function init()
    {
@@ -25,6 +27,23 @@ class ApplicationForm extends Form {
                'id' => 'libelle',
            ],
        ]);
        //groupe
        $this->add([
            'name' => 'groupe',
            'type' => Select::class,
            'options' => [
                'label' => "Groupe de l'application : ",
                'label_attributes' => [
                    'class' => 'control-label',
                ],
                'empty_option' => 'Sélectionner un groupe ...',
                'value_options' => $this->getApplicationGroupeService()->getApplicationsGroupesAsOption(),
            ],
            'attributes' => [
                'class' => 'description form-control',
                'style' => 'height:300px;',
            ]
        ]);
        // description
        $this->add([
            'name' => 'description',
@@ -85,6 +104,7 @@ class ApplicationForm extends Form {
        //filter
        $this->setInputFilter((new Factory())->createInputFilter([
            'libelle'               => [ 'required' => true,  ],
            'groupe'                => [ 'required' => false,  ],
            'description'           => [ 'required' => false,  ],
            'url'                   => [ 'required' => false,  ],
            'formations'            => [ 'required' => false,  ],
+8 −1
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@

namespace Application\Form\Application;

use Application\Entity\Db\ApplicationGroupe;
use Application\Service\Application\ApplicationGroupeService;
use Application\Service\Formation\FormationService;
use Interop\Container\ContainerInterface;
use Zend\Form\FormElementManager;
@@ -10,13 +12,18 @@ class ApplicationFormFactory {

    public function __invoke(ContainerInterface $container)
    {
        /** @var FormationService $formationService */
        /**
         * @var ApplicationGroupe $applicationGroupeService
         * @var FormationService $formationService
         */
        $applicationGroupeService = $container->get(ApplicationGroupeService::class);
        $formationService = $container->get(FormationService::class);

        /** @var ApplicationHydrator $hydrator */
        $hydrator = $container->get('HydratorManager')->get(ApplicationHydrator::class);

        $form = new ApplicationForm();
        $form->setApplicationGroupeService($applicationGroupeService);
        $form->setFormationService($formationService);
        $form->init();
        $form->setHydrator($hydrator);
Loading