Commit 9f111316 authored by metivier's avatar metivier
Browse files

Merge branch 'application_groupe'

parents 61f1bbec 1d464fd9
Loading
Loading
Loading
Loading
+118 −25
Original line number Diff line number Diff line
@@ -8,12 +8,19 @@ use Application\Form\Application\ApplicationForm;
use Application\Form\Application\ApplicationFormFactory;
use Application\Form\Application\ApplicationHydrator;
use Application\Form\Application\ApplicationHydratorFactory;
use Application\Form\ApplicationGroupe\ApplicationGroupeForm;
use Application\Form\ApplicationGroupe\ApplicationGroupeFormFactory;
use Application\Form\ApplicationGroupe\ApplicationGroupeHydrator;
use Application\Form\ApplicationGroupe\ApplicationGroupeHydratorFactory;
use Application\Form\SelectionApplication\SelectionApplicationForm;
use Application\Form\SelectionApplication\SelectionApplicationFormFactory;
use Application\Form\SelectionApplication\SelectionApplicationHydrator;
use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Service\Application\ApplicationGroupeService;
use Application\Service\Application\ApplicationService;
use Application\Service\Application\ApplicationServiceFactory;
use Application\Service\Application\ApplicationGroupeServiceFactory;
use Application\View\Helper\ApplicationGroupeViewHelper;
use UnicaenPrivilege\Guard\PrivilegeController;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
@@ -35,6 +42,7 @@ return [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'afficher',
                        'afficher-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_AFFICHER,
@@ -45,6 +53,9 @@ return [
                    'action' => [
                        'changer-status',
                        'editer',
                        'modifier-groupe',
                        'historiser-groupe',
                        'restaurer-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_EDITER,
@@ -54,6 +65,7 @@ return [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'creer',
                        'ajouter-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_AJOUTER,
@@ -63,6 +75,7 @@ return [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'effacer',
                        'detruire-groupe',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::APPLICATION_EFFACER,
@@ -104,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' => [
@@ -164,6 +249,7 @@ return [
        ],
        'factories' => [
            ApplicationService::class => ApplicationServiceFactory::class,
            ApplicationGroupeService::class => ApplicationGroupeServiceFactory::class,
        ],
    ],
    'controllers' => [
@@ -174,6 +260,7 @@ return [
    'form_elements' => [
        'factories' => [
            ApplicationForm::class => ApplicationFormFactory::class,
            ApplicationGroupeForm::class => ApplicationGroupeFormFactory::class,
            SelectionApplicationForm::class => SelectionApplicationFormFactory::class,
        ],
    ],
@@ -183,7 +270,13 @@ return [
        ],
        'factories' => [
            ApplicationHydrator::class => ApplicationHydratorFactory::class,
            ApplicationGroupeHydrator::class => ApplicationGroupeHydratorFactory::class,
        ]
    ]
    ],
    'view_helpers' => [
        'invokables' => [
            'applicationGroupe' => ApplicationGroupeViewHelper::class,
        ],
    ],

];
 No newline at end of file
+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
@@ -16,6 +16,8 @@ class Application {
    private $url;
    /** @var boolean */
    private $actif;
    /** @var ApplicationGroupe */
    private $groupe;

    /** @var ArrayCollection */
    private  $activites;
@@ -108,6 +110,24 @@ class Application {
        return $this;
    }

    /**
     * @return ApplicationGroupe
     */
    public function getGroupe()
    {
        return $this->groupe;
    }

    /**
     * @param ApplicationGroupe $groupe
     * @return Application
     */
    public function setGroupe($groupe)
    {
        $this->groupe = $groupe;
        return $this;
    }

    /**
     * @return Activite[]
     */
+122 −0
Original line number Diff line number Diff line
<?php

namespace Application\Entity\Db;

use Doctrine\Common\Collections\ArrayCollection;
use UnicaenUtilisateur\Entity\HistoriqueAwareInterface;
use UnicaenUtilisateur\Entity\HistoriqueAwareTrait;

class ApplicationGroupe implements HistoriqueAwareInterface {
    use HistoriqueAwareTrait;

    /** @var integer */
    private $id;
    /** @var string */
    private $libelle;
    /** @var string */
    private $couleur;
    /** @var string */
    private $ordre;
    /** @var ArrayCollection (Application) */
    private $applications;

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return string
     */
    public function getLibelle()
    {
        return $this->libelle;
    }

    /**
     * @param string $libelle
     * @return ApplicationGroupe
     */
    public function setLibelle($libelle)
    {
        $this->libelle = $libelle;
        return $this;
    }

    /**
     * @return string
     */
    public function getCouleur()
    {
        return $this->couleur;
    }

    /**
     * @param string $couleur
     * @return ApplicationGroupe
     */
    public function setCouleur($couleur)
    {
        $this->couleur = $couleur;
        return $this;
    }

    /**
     * @return string
     */
    public function getOrdre()
    {
        return $this->ordre;
    }

    /**
     * @param string $ordre
     * @return ApplicationGroupe
     */
    public function setOrdre($ordre)
    {
        $this->ordre = $ordre;
        return $this;
    }

    /**
     * @return Application[]
     */
    public function getApplications()
    {
        return $this->applications->toArray();
    }

    /**
     * @param Application $application
     * @return ApplicationGroupe
     */
    public function addFormation($application)
    {
        $this->applications->add($application);
        return $this;
    }
    /**
     * @param Application $application
     * @return ApplicationGroupe
     */
    public function removeFormation($application)
    {
        $this->applications->removeElement($application);
        return $this;
    }

    /**
     * @param Application $application
     * @return boolean
     */
    public function hasFormation($application)
    {
        return $this->applications->contains($application);
    }


}
 No newline at end of file
Loading