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

Début de gestion des agents

parent 2ccd595b
Loading
Loading
Loading
Loading
+37 −1
Changes for module/Application/config/merged/fiche-metier.config.php: 37 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -6,6 +6,9 @@ use Application\Controller\FicheMetier\FicheMetierController;
use Application\Controller\FicheMetier\FicheMetierControllerFactory;
use Application\Controller\FicheMetier\FicheMetierTypeController;
use Application\Controller\FicheMetier\FicheMetierTypeControllerFactory;
use Application\Form\Agent\AgentForm;
use Application\Form\Agent\AgentFormFactory;
use Application\Form\Agent\AgentHydrator;
use Application\Form\FicheMetier\FicheMetierCreationForm;
use Application\Form\FicheMetier\FicheMetierCreationFormFactory;
use Application\Form\FicheMetier\FicheMetierCreationHydrator;
@@ -20,6 +23,8 @@ use Application\Form\FicheMetierType\MissionsPrincipalesForm;
use Application\Form\FicheMetierType\MissionsPrincipalesFormFactory;
use Application\Form\FicheMetierType\MissionsPrincipalesHydrator;
use Application\Provider\Privilege\FicheMetierPrivileges;
use Application\Service\Agent\AgentService;
use Application\Service\Agent\AgentServiceFactory;
use Application\Service\FicheMetier\FicheMetierService;
use Application\Service\FicheMetier\FicheMetierServiceFactory;
use UnicaenAuth\Guard\PrivilegeController;
@@ -42,6 +47,8 @@ return [
                    'controller' => FicheMetierController::class,
                    'action' => [
                        'afficher',
                        'afficher-agent',
                        'saisie-manuelle-agent',
                    ],
                    'privileges' => [
                        FicheMetierPrivileges::AFFICHER,
@@ -157,7 +164,30 @@ return [
                                'action'     => 'creer',
                            ],
                        ],
                    ]
                    ],

                    'afficher-agent' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/afficher-agent/:id',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'afficher-agent',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                    'saisie-manuelle-agent' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/saisie-manuelle-agent/:id',
                            'defaults' => [
                                'controller' => FicheMetierController::class,
                                'action'     => 'saisie-manuelle-agent',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                ],
            ],
            'fiche-metier-type' => [
@@ -258,6 +288,7 @@ return [
        ],
        'factories' => [
            FicheMetierService::class => FicheMetierServiceFactory::class,
            AgentService::class => AgentServiceFactory::class,
        ],
    ],
    'controllers'     => [
@@ -267,16 +298,21 @@ return [
        ],
    ],
    'form_elements' => [
        'invokables' => [
        ],
        'factories' => [
            ActiviteExistanteForm::class => ActiviteExistanteFormFactory::class,
            FicheMetierCreationForm::class => FicheMetierCreationFormFactory::class,
            LibelleForm::class => LibelleFormFactory::class,
            MissionsPrincipalesForm::class => MissionsPrincipalesFormFactory::class,

            AgentForm::class => AgentFormFactory::class,
        ],
    ],
    'hydrators' => [
        'invokables' => [
            MissionsPrincipalesHydrator::class => MissionsPrincipalesHydrator::class,
            AgentHydrator::class => AgentHydrator::class,
        ],
        'factories' => [
            FicheMetierCreationHydrator::class => FicheMetierCreationHydratorFactory::class,
+44 −0
Changes for module/Application/src/Application/Controller/FicheMetier/FicheMetierController.php: 44 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,8 +2,11 @@

namespace Application\Controller\FicheMetier;

use Application\Entity\Db\Agent;
use Application\Entity\Db\FicheMetier;
use Application\Form\Agent\AgentForm;
use Application\Form\FicheMetier\FicheMetierCreationForm;
use Application\Service\Agent\AgentServiceAwareTrait;
use Application\Service\FicheMetier\FicheMetierServiceAwareTrait;
use UnicaenApp\Exception\RuntimeException;
use Zend\Http\Request;
@@ -13,6 +16,7 @@ use Zend\View\Model\ViewModel;
class FicheMetierController extends AbstractActionController
{
    use FicheMetierServiceAwareTrait;
    use AgentServiceAwareTrait;

    public function indexAction() {

@@ -88,4 +92,44 @@ class FicheMetierController extends AbstractActionController
           'form' => $form,
        ]);
    }

    /** ACTION ASSOCIÉES À L'AGENT ************************************************************************************/

    public function afficherAgentAction() {

        $ficheId = $this->params()->fromRoute('id');
        $fiche = $this->getFicheMetierService()->getFicheMetier($ficheId);
        $agent = $fiche->getAgent();

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

    public function saisieManuelleAgentAction() {

        $ficheId = $this->params()->fromRoute('id');
        $fiche = $this->getFicheMetierService()->getFicheMetier($ficheId);

        $agent = $fiche->getAgent();
        /** @var AgentForm $form */
        $form = $this->getServiceLocator()->get('FormElementManager')->get(AgentForm::class);
        $form->bind($agent);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            $form->setData($data);
            if ($form->isValid()) {
                $this->getAgentService()->create($agent);
                $this->getFicheMetierService()->update($fiche);
                $this->redirect()->toRoute('fiche-metier/afficher-agent', ['id' => $ficheId], [], true);
            }
        }

        return new ViewModel([
            'form' => $form,
        ]);
    }
}
 No newline at end of file
+4 −0
Changes for module/Application/src/Application/Controller/FicheMetier/FicheMetierControllerFactory.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Application\Controller\FicheMetier;

use Application\Service\Agent\AgentService;
use Application\Service\FicheMetier\FicheMetierService;
use Zend\Mvc\Controller\ControllerManager;

@@ -11,12 +12,15 @@ class FicheMetierControllerFactory {
    {
        /**
         * @var FicheMetierService $ficheMetierService
         * @var AgentService $agentService
         */
        $ficheMetierService = $controllerManager->getServiceLocator()->get(FicheMetierService::class);
        $agentService = $controllerManager->getServiceLocator()->get(AgentService::class);

        /** @var FicheMetierController $controller */
        $controller = new FicheMetierController();
        $controller->setFicheMetierService($ficheMetierService);
        $controller->setAgentService($agentService);
        return $controller;
    }

+125 −0
Changes for module/Application/src/Application/Entity/Db/Agent.php: 125 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Entity\Db;

use DateTime;

class Agent {

    /** @var integer */
    private $id;
    /** @var string */
    private $nom;
    /** @var string */
    private $prenom;

    // categorie, corps, et grade (devrait correspondre à des infos en bases pour une meilleures structuration ...

    /** @var DateTime */
    private $dateDebut;
    /** @var DateTime */
    private $dateFin;
    /** @var integer */
    private $quotite;

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

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

    /**
     * @param string $nom
     * @return Agent
     */
    public function setNom($nom)
    {
        $this->nom = $nom;
        return $this;
    }

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

    /**
     * @param string $prenom
     * @return Agent
     */
    public function setPrenom($prenom)
    {
        $this->prenom = $prenom;
        return $this;
    }

    /**
     * @return DateTime
     */
    public function getDateDebut()
    {
        return $this->dateDebut;
    }

    /**
     * @param DateTime $dateDebut
     * @return Agent
     */
    public function setDateDebut($dateDebut)
    {
        $this->dateDebut = $dateDebut;
        return $this;
    }

    /**
     * @return DateTime
     */
    public function getDateFin()
    {
        return $this->dateFin;
    }

    /**
     * @param DateTime $dateFin
     * @return Agent
     */
    public function setDateFin($dateFin)
    {
        $this->dateFin = $dateFin;
        return $this;
    }

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

    /**
     * @param int $quotite
     * @return Agent
     */
    public function setQuotite($quotite)
    {
        $this->quotite = $quotite;
        return $this;
    }



}
 No newline at end of file
+22 −0
Changes for module/Application/src/Application/Entity/Db/FicheMetier.php: 22 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -14,6 +14,8 @@ class FicheMetier
    private $libelle;
    /** @var Affectation */
    private $affectation;
    /** @var Agent */
    private $agent;

    public function getId()
    {
@@ -55,4 +57,24 @@ class FicheMetier
        $this->affectation = $affectation;
        return $this;
    }

    /**
     * @return Agent
     */
    public function getAgent()
    {
        return $this->agent;
    }

    /**
     * @param Agent $agent
     * @return FicheMetier
     */
    public function setAgent($agent)
    {
        $this->agent = $agent;
        return $this;
    }


}
 No newline at end of file
Loading