Commit 06131404 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

délai du questionnaire à partir de la cloture de l'enquete, ajout d'un bouton...

délai du questionnaire à partir de la cloture de l'enquete, ajout d'un bouton sursis pour accorder un sursis exceptionnel à un étudiant d'une session
parent 60b4a3ee
Loading
Loading
Loading
Loading
+20 −0
Changes for module/Formation/config/others/inscription.config.php: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -92,6 +92,15 @@ return [
                        InscriptionPrivileges::INSCRIPTION_ATTESTATION,
                    ],
                ],
                [
                    'controller' => InscriptionController::class,
                    'action' => [
                        'accorder-sursis'
                    ],
                    'privileges' => [
                        InscriptionPrivileges::INSCRIPTION_SURSIS,
                    ],
                ],
            ],
        ],
    ],
@@ -249,6 +258,17 @@ return [
                                    ],
                                ],
                            ],
                            'accorder-sursis' => [
                                'type'  => Segment::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route'    => '/accorder-sursis/:inscription',
                                    'defaults' => [
                                        'controller' => InscriptionController::class,
                                        'action'     => 'accorder-sursis',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
+10 −2
Changes for module/Formation/src/Formation/Controller/EnqueteQuestionController.php: 10 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ use Doctrine\Common\Collections\ArrayCollection;
use Formation\Entity\Db\EnqueteCategorie;
use Formation\Entity\Db\EnqueteQuestion;
use Formation\Entity\Db\EnqueteReponse;
use Formation\Entity\Db\Etat;
use Formation\Form\EnqueteCategorie\EnqueteCategorieFormAwareTrait;
use Formation\Form\EnqueteQuestion\EnqueteQuestionFormAwareTrait;
use Formation\Form\EnqueteReponse\EnqueteReponseFormAwareTrait;
@@ -342,9 +343,15 @@ class EnqueteQuestionController extends AbstractController {

        $categories = $this->getEntityManager()->getRepository(EnqueteCategorie::class)->findAll();

        $delai = $this->getParametreService()->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ENQUETE);
        $date = DateTime::createFromFormat('d/m/Y', $inscription->getSession()->getDateFin()->format('d/m/Y'));
        $delai = $inscription->getSursisEnquete() ?: $this->getParametreService()->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ENQUETE);
        $heurodatagesSession = $inscription->getSession()->getHeurodatages();
        $date = null;
        foreach($heurodatagesSession as $heurodatageSession){
            $date = $heurodatageSession->getEtat()->getCode() === Etat::CODE_CLOTURER ? DateTime::createFromFormat('d/m/Y', $heurodatageSession->getHeurodatage()->format('d/m/Y')) : $date;
            if($date){
                $date->add(new DateInterval('P'.$delai.'D'));
            }
        }

        return new ViewModel([
            'inscription' => $inscription,
@@ -352,6 +359,7 @@ class EnqueteQuestionController extends AbstractController {
            'categories' => $categories,
            'form' => $form,
            'date' => $date,
            'delai' => $delai
        ]);
    }

+25 −0
Changes for module/Formation/src/Formation/Controller/InscriptionController.php: 25 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ use Fichier\Service\Fichier\FichierStorageServiceAwareTrait;
use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException;
use Formation\Entity\Db\Inscription;
use Formation\Provider\NatureFichier\NatureFichier;
use Formation\Provider\Parametre\FormationParametres;
use Formation\Service\Exporter\Attestation\AttestationExporterAwareTrait;
use Formation\Service\Exporter\Convocation\ConvocationExporterAwareTrait;
use Formation\Service\Inscription\InscriptionServiceAwareTrait;
@@ -26,6 +27,7 @@ use Structure\Service\Etablissement\EtablissementServiceAwareTrait;
use Structure\Service\StructureDocument\StructureDocumentServiceAwareTrait;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait;

class InscriptionController extends AbstractController
{
@@ -42,6 +44,7 @@ class InscriptionController extends AbstractController
    use StructureDocumentServiceAwareTrait;
    use AttestationExporterAwareTrait;
    use ConvocationExporterAwareTrait;
    use ParametreServiceAwareTrait;

    private ?PhpRenderer $renderer = null;
    public function setRenderer(?PhpRenderer $renderer) { $this->renderer = $renderer; }
@@ -172,6 +175,28 @@ class InscriptionController extends AbstractController
        return $vm;
    }

    public function accorderSursisAction()
    {
        $inscription = $this->getInscriptionService()->getRepository()->getRequestedInscription($this);

        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
            if($data["sursisEnquete"]){
                $inscription->setSursisEnquete($data["sursisEnquete"]);
                $this->inscriptionService->update($inscription);
            }
        }

        $delai = $this->parametreService->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ENQUETE);

        return new ViewModel([
            "title" => "Accorder un sursis pour la saisie de l'enquête",
            "inscription" => $inscription,
            'delai' => $delai
        ]);
    }

    /** GESTION DES LISTES ********************************************************************************************/

    public function passerListePrincipaleAction() : Response
+3 −0
Changes for module/Formation/src/Formation/Controller/InscriptionControllerFactory.php: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ use Notification\Service\NotifierService;
use Formation\Service\Presence\PresenceService;
use Interop\Container\ContainerInterface;
use Laminas\View\Renderer\PhpRenderer;
use UnicaenParametre\Service\Parametre\ParametreService;

class InscriptionControllerFactory {

@@ -55,6 +56,7 @@ class InscriptionControllerFactory {
        $structureDocumentService = $container->get(StructureDocumentService::class);
        $attestationExporter = $container->get(AttestationExporter::class);
        $convocationExporter = $container->get(ConvocationExporter::class);
        $parametreService = $container->get(ParametreService::class);

        /* @var $renderer PhpRenderer */
        $renderer = $container->get('ViewRenderer');
@@ -75,6 +77,7 @@ class InscriptionControllerFactory {
        /** autres*****************************************************************************************************/
        $controller->setAttestationExporter($attestationExporter);
        $controller->setConvocationExporter($convocationExporter);
        $controller->setParametreService($parametreService);
        $controller->setRenderer($renderer);

        /** @var \Formation\Service\Notification\FormationNotificationFactory $formationNotificationFactory */
+11 −0
Changes for module/Formation/src/Formation/Entity/Db/Inscription.php: 11 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ class Inscription implements HistoriqueAwareInterface {
    private ?string $description = null;
    private ?Collection $presences = null;
    private ?DateTime $validationEnquete = null;
    private ?int $sursisEnquete = null;

    /**
     * @return int
@@ -150,6 +151,16 @@ class Inscription implements HistoriqueAwareInterface {
        $this->validationEnquete = $validationEnquete;
    }

    public function getSursisEnquete(): ?int
    {
        return $this->sursisEnquete;
    }

    public function setSursisEnquete(?int $sursisEnquete): void
    {
        $this->sursisEnquete = $sursisEnquete;
    }

    public function getPositionListeComplementaire() : int
    {
        if ($this->getListe() !== Inscription::LISTE_COMPLEMENTAIRE OR $this->estHistorise()) return -1;
Loading