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

Ajout des inscriptions libres

parent 421acf40
Loading
Loading
Loading
Loading
+58 −0
Changes for module/Formation/config/merged/formation-instance-inscrit.config.php: 58 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2,12 +2,14 @@

namespace Formation;

use Application\Controller\IndexController;
use Formation\Controller\FormationInstanceInscritController;
use Formation\Controller\FormationInstanceInscritControllerFactory;
use Formation\Provider\Privilege\FormationinstanceinscritPrivileges;
use Formation\Service\FormationInstanceInscrit\FormationInstanceInscritService;
use Formation\Service\FormationInstanceInscrit\FormationInstanceInscritServiceFactory;
use UnicaenPrivilege\Guard\PrivilegeController;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;

return [
@@ -28,14 +30,70 @@ return [
                        FormationinstanceinscritPrivileges::FORMATIONINSTANCEINSCRIT_MODIFIER,
                    ],
                ],
                [
                    'controller' => FormationInstanceInscritController::class,
                    'action' => [
                        'liste-formations-instances',
                        'inscription',
                        'desinscription',
                    ],
                    'roles' => [
                        'Agent',
                    ],
                ],
            ],
        ],
    ],
    'navigation' => [
        'default' => [
            'home' => [
                'pages' => [
                    'formations' => [
                        'order' => 1000,
                        'label' => 'Formations',
                        'title' => "Gestion des actions de formations et des inscriptions à celles-ci",
                        'route' => 'liste-formations-instances',
                        'resource' => PrivilegeController::getResourceId(FormationInstanceInscritController::class, 'liste-formations-instances'),
                    ],
                ],
            ],
        ],
    ],

    'router'          => [
        'routes' => [
            'liste-formations-instances' => [
                'type'  => Literal::class,
                'options' => [
                    'route'    => '/liste-formations-instances',
                    'defaults' => [
                        'controller' => FormationInstanceInscritController::class,
                        'action'     => 'liste-formations-instances',
                    ],
                ],
            ],
            'formation-instance' => [
                'child_routes' => [
                    'inscription' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/inscription/:formation-instance/:agent',
                            'defaults' => [
                                'controller' => FormationInstanceInscritController::class,
                                'action'     => 'inscription',
                            ],
                        ],
                    ],
                    'desinscription' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/desinscription/:inscrit',
                            'defaults' => [
                                'controller' => FormationInstanceInscritController::class,
                                'action'     => 'desinscription',
                            ],
                        ],
                    ],
                    'ajouter-agent' => [
                        'type'  => Segment::class,
                        'options' => [
+11 −0
Changes for module/Formation/config/merged/formation-instance.config.php: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@ return [
                    'action' => [
                        'convoquer',
                        'questionner',
                        'formation-console',
                    ],
                    'roles' => [],
                ],
@@ -223,6 +224,16 @@ return [
                        ],
                    ],
                ],
                'formation-console' => [
                    'type' => Simple::class,
                    'options' => [
                        'route' => 'formation-console',
                        'defaults' => [
                            'controller' => FormationInstanceController::class,
                            'action' => 'formation-console'
                        ],
                    ],
                ],
            ],
        ],
    ],
+15 −2
Changes for module/Formation/src/Formation/Controller/FormationInstanceController.php: 15 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Autoform\Service\Formulaire\FormulaireInstanceServiceAwareTrait;
use DateInterval;
use DateTime;
use Formation\Entity\Db\FormationInstance;
use Formation\Entity\Db\FormationInstanceFormateur;
use Formation\Form\FormationInstance\FormationInstanceFormAwareTrait;
use Formation\Service\Formation\FormationServiceAwareTrait;
use Formation\Service\FormationInstance\FormationInstanceServiceAwareTrait;
@@ -168,8 +169,12 @@ class FormationInstanceController extends AbstractActionController
        if ($instance->getEtat()->getCode() === FormationInstance::ETAT_INSCRIPTION_OUVERTE) {
            $instance->setEtat($this->getEtatService()->getEtatByCode(FormationInstance::ETAT_INSCRIPTION_FERMEE));
            $this->getFormationInstanceService()->update($instance);
            $this->getMailingService()->sendMailType("FORMATION_LISTE_PRINCIPALE", ['formation-instance' => $instance, 'mailing' => 'ZZZunicaen-biats@unicaen.fr']);
            $this->getMailingService()->sendMailType("FORMATION_LISTE_SECONDAIRE", ['formation-instance' => $instance, 'mailing' => 'ZZZunicaen-biats@unicaen.fr']);
            foreach ($instance->getListePrincipale() as $inscrit) {
                $this->getMailingService()->sendMailType("FORMATION_LISTE_PRINCIPALE", ['formation-instance' => $instance, 'mailing' => $inscrit->getAgent()->getEmail()]);
            }
            foreach ($instance->getListeComplementaire() as $inscrit) {
                $this->getMailingService()->sendMailType("FORMATION_LISTE_SECONDAIRE", ['formation-instance' => $instance, 'mailing' => $inscrit->getAgent()->getEmail()]);
            }
        }

        return $this->redirect()->toRoute('formation-instance/afficher', ['formation-instance' => $instance->getId()], [], true);
@@ -187,6 +192,9 @@ class FormationInstanceController extends AbstractActionController
                    $this->getMailingService()->sendMailType("FORMATION_CONVOCATION", ['formation-instance' => $instance, 'agent' => $inscrit->getAgent(), 'mailing' => $inscrit->getAgent()->getEmail()]);
                }
                echo "Action de formation #" . $instance->getId() ." - " . $instance->getFormation()->getLibelle() . " : Envoi des convocations.\n";
                $this->getMailingService()->sendMailType("FORMATION_EMARGEMENT", ['formation-instance' => $instance, 'users' => array_map(function (FormationInstanceFormateur $a) { return $a->getEmail(); }, $instance->getFormateurs())]);
                echo "Action de formation #" . $instance->getId() ." - " . $instance->getFormation()->getLibelle() . " : Envoi des listes d'émargement.\n";

            }
        }
    }
@@ -206,4 +214,9 @@ class FormationInstanceController extends AbstractActionController
            }
        }
    }

    public function formationConsoleAction() {
        $this->convoquerAction();
        $this->questionnerAction();
    }
}
 No newline at end of file
+73 −0
Changes for module/Formation/src/Formation/Controller/FormationInstanceInscritController.php: 73 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,9 +3,13 @@
namespace Formation\Controller;

use Application\Form\SelectionAgent\SelectionAgentFormAwareTrait;
use Application\Service\Agent\AgentServiceAwareTrait;
use Formation\Entity\Db\FormationInstance;
use Formation\Entity\Db\FormationInstanceInscrit;
use Formation\Service\FormationInstance\FormationInstanceServiceAwareTrait;
use Formation\Service\FormationInstanceInscrit\FormationInstanceInscritServiceAwareTrait;
use UnicaenApp\Exception\RuntimeException;
use UnicaenUtilisateur\Service\User\UserServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger;
@@ -14,11 +18,14 @@ use Zend\View\Model\ViewModel;
/** @method FlashMessenger flashMessenger() */
class FormationInstanceInscritController extends AbstractActionController
{
    use AgentServiceAwareTrait;
    use FormationInstanceServiceAwareTrait;
    use FormationInstanceInscritServiceAwareTrait;
    use UserServiceAwareTrait;

    use SelectionAgentFormAwareTrait;


    public function ajouterAgentAction()
    {
        $instance = $this->getFormationInstanceService()->getRequestedFormationInstance($this);
@@ -127,4 +134,70 @@ class FormationInstanceInscritController extends AbstractActionController

        return $this->redirect()->toRoute('formation-instance/afficher', ['formation-instance' => $inscrit->getInstance()->getId()], [], true);
    }

    public function listeFormationsInstancesAction()
    {
        $instances = $this->getFormationInstanceService()->getFormationsInstancesByEtat(FormationInstance::ETAT_INSCRIPTION_OUVERTE);
        $instances = array_filter($instances, function (FormationInstance $a) { return $a->isAutoInscription();});
        $utilisateur = $this->getUserService()->getConnectedUser();
        $agent = $this->getAgentService()->getAgentByUser($utilisateur);

        $inscriptions = $this->getFormationInstanceInscritService()->getFormationsByInscrit($agent);

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

    public function inscriptionAction()
    {
        $instance = $this->getFormationInstanceService()->getRequestedFormationInstance($this);
        $agent = $this->getAgentService()->getRequestedAgent($this);

        $user = $this->getUserService()->getConnectedUser();

        $break = false;
        $liste = $instance->getListeDisponible();
        if ($agent->getUtilisateur() !== $user) {
            $this->flashMessenger()->addErrorMessage("L'utilisateur connecté ne correspond à l'agent en train de s'inscrire !");
            $break = true;
        }
        if ($liste === null) {
            $this->flashMessenger()->addErrorMessage("Plus de place disponible sur aucune des listes de cette action de formation.");
            $break = true;
        }

        if (!$break) {
            $inscrit = new FormationInstanceInscrit();
            $inscrit->setInstance($instance);
            $inscrit->setAgent($agent);
            $inscrit->setListe($liste);
            $this->getFormationInstanceInscritService()->create($inscrit);
            $this->flashMessenger()->addSuccessMessage("Inscription effectué sur la liste ".$liste.".");
        }

        return $this->redirect()->toRoute('liste-formations-instances', [], ['fragment' => 'instances'], true);
    }

    public function desinscriptionAction()
    {
        $inscrit = $this->getFormationInstanceInscritService()->getRequestedFormationInstanceInscrit($this);
        $agent = $inscrit->getAgent();
        $user = $this->getUserService()->getConnectedUser();

        $break = false;
        if ($agent->getUtilisateur() !== $user) {
            $this->flashMessenger()->addErrorMessage("L'utilisateur connecté ne correspond à l'agent en train de se déinscrire !");
            $break = true;
        }

        if (!$break) {
            $this->getFormationInstanceInscritService()->historise($inscrit);
            $this->flashMessenger()->addSuccessMessage("Inscription annulée.");
        }

        return $this->redirect()->toRoute('liste-formations-instances', [], ['fragment' => 'inscriptions'], true);
    }
}
 No newline at end of file
+8 −0
Changes for module/Formation/src/Formation/Controller/FormationInstanceInscritControllerFactory.php: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,9 +3,11 @@
namespace Formation\Controller;

use Application\Form\SelectionAgent\SelectionAgentForm;
use Application\Service\Agent\AgentService;
use Formation\Service\FormationInstance\FormationInstanceService;
use Formation\Service\FormationInstanceInscrit\FormationInstanceInscritService;
use Interop\Container\ContainerInterface;
use UnicaenUtilisateur\Service\User\UserService;

class FormationInstanceInscritControllerFactory
{
@@ -17,11 +19,15 @@ class FormationInstanceInscritControllerFactory
    public function __invoke(ContainerInterface $container)
    {
        /**
         * @var AgentService $agentService
         * @var FormationInstanceService $formationInstanceService
         * @var FormationInstanceInscritService $formationInstanceInscritService
         * @var UserService $userService
         */
        $agentService = $container->get(AgentService::class);
        $formationInstanceService = $container->get(FormationInstanceService::class);
        $formationInstanceInscritService = $container->get(FormationInstanceInscritService::class);
        $userService = $container->get(UserService::class);

        /**
         * @var SelectionAgentForm $selectionAgentForm
@@ -29,8 +35,10 @@ class FormationInstanceInscritControllerFactory
        $selectionAgentForm = $container->get('FormElementManager')->get(SelectionAgentForm::class);

        $controller = new FormationInstanceInscritController();
        $controller->setAgentService($agentService);
        $controller->setFormationInstanceService($formationInstanceService);
        $controller->setFormationInstanceInscritService($formationInstanceInscritService);
        $controller->setUserService($userService);
        $controller->setSelectionAgentForm($selectionAgentForm);
        return $controller;
    }
Loading