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

Ajout de la gestion des applications

parent 21980ba2
Loading
Loading
Loading
Loading
+61 −23
Changes for module/Application/config/merged/application.config.php: 61 added lines, 23 removed lines.
Original line number Diff line number Diff line
@@ -2,14 +2,14 @@

namespace Application;

use Application\Controller\Activite\ActiviteController;
use Application\Controller\Activite\ActiviteControllerFactory;
use Application\Form\Activite\ActiviteForm;
use Application\Form\Activite\ActiviteFormFactory;
use Application\Form\Activite\ActiviteHydrator;
use Application\Provider\Privilege\ActivitePrivileges;
use Application\Service\Activite\ActiviteService;
use Application\Service\Activite\ActiviteServiceFactory;
use Application\Controller\Application\ApplicationController;
use Application\Controller\Application\ApplicationControllerFactory;
use Application\Form\Application\ApplicationForm;
use Application\Form\Application\ApplicationFormFactory;
use Application\Form\Application\ApplicationHydrator;
use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Service\Application\ApplicationService;
use Application\Service\Application\ApplicationServiceFactory;
use UnicaenAuth\Guard\PrivilegeController;
use Zend\Mvc\Router\Http\Literal;
use Zend\Mvc\Router\Http\Segment;
@@ -19,23 +19,41 @@ return [
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => ActiviteController::class,
                    'controller' => ApplicationController::class,
                    'action' => [
                        'index',
                        'afficher',
                    ],
                    'privileges' => [
                        ActivitePrivileges::AFFICHER,
                        ApplicationPrivileges::AFFICHER,
                    ],
                ],
                [
                    'controller' => ActiviteController::class,
                    'controller' => ApplicationController::class,
                    'action' => [
                        'creer',
                        'changer-status',
                        'editer',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::EDITER,
                    ],
                ],
                [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'creer',
                    ],
                    'privileges' => [
                        ApplicationPrivileges::AJOUTER,
                    ],
                ],
                [
                    'controller' => ApplicationController::class,
                    'action' => [
                        'effacer',
                    ],
                    'privileges' => [
                        ActivitePrivileges::EDITER,
                        ApplicationPrivileges::EFFACER,
                    ],
                ],
            ],
@@ -44,23 +62,43 @@ return [

    'router'          => [
        'routes' => [
            'activite' => [
            'application' => [
                'type'  => Literal::class,
                'options' => [
                    'route'    => '/activite',
                    'route'    => '/application',
                    'defaults' => [
                        'controller' => ActiviteController::class,
                        'controller' => ApplicationController::class,
                        'action'     => 'index',
                    ],
                ],
                'may_terminate' => true,
                'child_routes' => [
                    'afficher' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/afficher/:id',
                            'defaults' => [
                                'controller' => ApplicationController::class,
                                'action'     => 'afficher',
                            ],
                        ],
                    ],
                    'changer-status' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/changer-status/:id',
                            'defaults' => [
                                'controller' => ApplicationController::class,
                                'action'     => 'changer-status',
                            ],
                        ],
                    ],
                    'editer' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/editer/:id',
                            'defaults' => [
                                'controller' => ActiviteController::class,
                                'controller' => ApplicationController::class,
                                'action'     => 'editer',
                            ],
                        ],
@@ -70,7 +108,7 @@ return [
                        'options' => [
                            'route'    => '/effacer/:id',
                            'defaults' => [
                                'controller' => ActiviteController::class,
                                'controller' => ApplicationController::class,
                                'action'     => 'effacer',
                            ],
                        ],
@@ -80,7 +118,7 @@ return [
                        'options' => [
                            'route'    => '/creer',
                            'defaults' => [
                                'controller' => ActiviteController::class,
                                'controller' => ApplicationController::class,
                                'action'     => 'creer',
                            ],
                        ],
@@ -94,22 +132,22 @@ return [
        'invokables' => [
        ],
        'factories' => [
            ActiviteService::class => ActiviteServiceFactory::class,
            ApplicationService::class => ApplicationServiceFactory::class,
        ],
    ],
    'controllers'     => [
        'factories' => [
            ActiviteController::class => ActiviteControllerFactory::class,
            ApplicationController::class => ApplicationControllerFactory::class,
        ],
    ],
    'form_elements' => [
        'factories' => [
            ActiviteForm::class => ActiviteFormFactory::class,
            ApplicationForm::class => ApplicationFormFactory::class,
        ],
    ],
    'hydrators' => [
        'invokable' => [
            ActiviteHydrator::class => ActiviteHydrator::class,
            ApplicationHydrator::class => ApplicationHydrator::class,
        ]
    ]

+8 −0
Changes for module/Application/config/merged/menu.config.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace Application;

use Application\Provider\Privilege\ActivitePrivileges;
use Application\Provider\Privilege\AffectationPrivileges;
use Application\Provider\Privilege\ApplicationPrivileges;
use Application\Provider\Privilege\FicheMetierPrivileges;

return [
@@ -46,6 +47,13 @@ return [
                                'dropdown-header' => true,
                                'icon' => 'fas fa-angle-right'
                            ],
                            [
                                'label' => 'Les applications',
                                'route' => 'application',
                                'privileges' => ApplicationPrivileges::AFFICHER,
                                'dropdown-header' => true,
                                'icon' => 'fas fa-angle-right'
                            ],
                        ],
                    ],
                ],
+54 −32
Changes for module/Application/src/Application/Controller/Application/ApplicationController.php: 54 added lines, 32 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Controller\Activite;
namespace Application\Controller\Application;

use Application\Entity\Db\Activite;
use Application\Form\Activite\ActiviteForm;
use Application\Service\Activite\ActiviteServiceAwareTrait;
use Application\Entity\Db\Application;
use Application\Form\Application\ApplicationForm;
use Application\Service\Application\ApplicationServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class ActiviteController  extends AbstractActionController {
    use ActiviteServiceAwareTrait;
class ApplicationController  extends AbstractActionController {
    use ApplicationServiceAwareTrait;

    public function indexAction()
    {
        /** @var Activite[] $activites */
        $activites = $this->getActiviteService()->getActivites('id');
        /** @var Application[] $activites */
        $applications = $this->getApplicationService()->getApplications('id');

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

    public function creerAction()
    {
        /** @var Activite $activite */
        $activite = new Activite();
        /** @var Application $application */
        $application = new Application();

        /** @var ActiviteForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(ActiviteForm::class);
//        $form->setAttribute('action', $this->url()->fromRoute('activite/creer',[],[], true));
        $form->bind($activite);
        /** @var ApplicationForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(ApplicationForm::class);
        $form->bind($application);
        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
@@ -38,8 +37,8 @@ class ActiviteController extends AbstractActionController {
            $form->setData($data);

            if ($form->isValid()) {
                $this->getActiviteService()->create($activite);
                $this->redirect()->toRoute('activite');
                $this->getApplicationService()->create($application);
                $this->redirect()->toRoute('application');
            }
        }

@@ -50,14 +49,13 @@ class ActiviteController extends AbstractActionController {

    public function editerAction()
    {
        /** @var Activite $activite */
        $activiteId = $this->params()->fromRoute('id');
        $activite = $this->getActiviteService()->getActivite($activiteId);

        /** @var ActiviteForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(ActiviteForm::class);
//        $form->setAttribute('action', $this->url()->fromRoute('activite/editer',['id' => $activite->getId()],[], true));
        $form->bind($activite);
        /** @var Application $application */
        $applicationId = $this->params()->fromRoute('id');
        $application = $this->getApplicationService()->getApplication($applicationId);

        /** @var ApplicationForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(ApplicationForm::class);
        $form->bind($application);
        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
@@ -65,8 +63,8 @@ class ActiviteController extends AbstractActionController {
            $form->setData($data);

            if ($form->isValid()) {
                $this->getActiviteService()->update($activite);
                $this->redirect()->toRoute('activite');
                $this->getApplicationService()->update($application);
                $this->redirect()->toRoute('application');
            }
        }

@@ -77,11 +75,35 @@ class ActiviteController extends AbstractActionController {

    public function effacerAction()
    {
        /** @var Activite $activite */
        $activiteId = $this->params()->fromRoute('id');
        $activite = $this->getActiviteService()->getActivite($activiteId);
        /** @var Application $application */
        $applicationId = $this->params()->fromRoute('id');
        $application = $this->getApplicationService()->getApplication($applicationId);

        $this->getApplicationService()->delete($application);
        $this->redirect()->toRoute('application');
    }

    public function changerStatusAction()
    {
        /** @var Application $application */
        $applicationId = $this->params()->fromRoute('id');
        $application = $this->getApplicationService()->getApplication($applicationId);

        $application->setActif( !$application->isActif() );

        $this->getApplicationService()->update($application);
        $this->redirect()->toRoute('application');
    }

    public function afficherAction()
    {
        /** @var Application $application */
        $applicationId = $this->params()->fromRoute('id');
        $application = $this->getApplicationService()->getApplication($applicationId);

        $this->getActiviteService()->delete($activite);
        $this->redirect()->toRoute('activite');
        return new ViewModel([
            'title' => "Affichage de la description de l'application",
            'application' => $application,
        ]);
    }
}
 No newline at end of file
+8 −8
Changes for module/Application/src/Application/Controller/Application/ApplicationControllerFactory.php: 8 added lines, 8 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Controller\Activite;
namespace Application\Controller\Application;

use Application\Service\Activite\ActiviteService;
use Application\Service\Application\ApplicationService;
use Zend\Mvc\Controller\ControllerManager;

class ActiviteControllerFactory {
class ApplicationControllerFactory {

    public function __invoke(ControllerManager $controllerManager)
    {
        /**
         * @var ActiviteService $activiteService
         * @var ApplicationService $applicationService
         */
        $activiteService = $controllerManager->getServiceLocator()->get(ActiviteService::class);
        $applicationService = $controllerManager->getServiceLocator()->get(ApplicationService::class);

        /** @var ActiviteController $controller */
        $controller = new ActiviteController();
        $controller->setActiviteService($activiteService);
        /** @var ApplicationController $controller */
        $controller = new ApplicationController();
        $controller->setApplicationService($applicationService);
        return $controller;
    }
}
 No newline at end of file
+97 −0
Changes for module/Application/src/Application/Entity/Db/Application.php: 97 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Entity\Db;

class Application {

    /** @var integer */
    private $id;
    /** @var string */
    private $libelle;
    /** @var string */
    private $description;
    /** @var string */
    private $url;
    /** @var boolean */
    private $actif;

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

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

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

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

    /**
     * @param string $description
     * @return Application
     */
    public function setDescription($description)
    {
        $this->description = $description;
        return $this;
    }

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

    /**
     * @param string $url
     * @return Application
     */
    public function setUrl($url)
    {
        $this->url = $url;
        return $this;
    }

    /**
     * @return bool
     */
    public function isActif()
    {
        return $this->actif;
    }

    /**
     * @param bool $actif
     * @return Application
     */
    public function setActif($actif)
    {
        $this->actif = $actif;
        return $this;
    }
}
 No newline at end of file
Loading