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

retour en arrière : plus d'interdiction lorsqu'un doctorant s'inscrit dans une même formation

parent 591f6546
Loading
Loading
Loading
Loading
+2 −34
Changes for module/Formation/src/Formation/Assertion/Inscription/InscriptionAssertion.php: 2 added lines, 34 removed lines.
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ class InscriptionAssertion extends AbstractAssertion implements AssertionInterf
                        $inscription = new Inscription();
                        $inscription->setDoctorant($doctorant);
                        $inscription->setSession($session);
                        return $this->canInscrire($inscription);
                        return $this->scopeValide($inscription);
                    }
                    return false;
                }
@@ -115,44 +115,12 @@ class InscriptionAssertion extends AbstractAssertion implements AssertionInterf

        if ($privilege == InscriptionPrivileges::INSCRIPTION_AJOUTER) {
            if ($inscription->getHistoCreateur()) return $this->canDesinscrire($entity);
            return $this->canInscrire($entity);
            return $this->scopeValide($inscription);
        }

        return true;
    }

    private function canInscrire(?Inscription $inscription): bool
    {
        if (!$this->scopeValide($inscription)) return false;
        $doctorant = $inscription->getDoctorant();
        $session = $inscription->getSession();
        $inscriptions = $this->inscriptionService->getRepository()->findInscriptionsByDoctorant($doctorant);

        /** @var Inscription $inscription */
        foreach ($inscriptions as $inscription) {
            $sessionInscriptionEnregistree = $inscription->getSession();
            if (!$sessionInscriptionEnregistree || !$sessionInscriptionEnregistree->getDateDebut()) {
                continue; // Passe à l'inscription suivante si la session ou la date de début est manquante
            }

            $premiereAnneeUnivSessionInscription = $this->anneeUnivService->fromDate($sessionInscriptionEnregistree->getDateDebut())->getPremiereAnnee();
            //si la session demandée possède la même formation qu'une inscription possédée par l'étudiant,
            //on vérifie que l'année universitaire ne soit pas la même
            //sinon on refuse l'inscription, car l'étudiant ne peut pas s'inscrire sur une session appartenant à une formation déjà suivie sur la même année universitaire
            if ($session && $session->getFormation() === $sessionInscriptionEnregistree->getFormation()) {
                $sessionOuverteDateDebut = $session->getDateDebut();
                if ($sessionOuverteDateDebut) {
                    $premiereAnneeUnivSessionOuverte = $this->anneeUnivService->fromDate($sessionOuverteDateDebut)->getPremiereAnnee();
                    // Si les années universitaires sont identiques, on interdit l'inscription
                    if ($premiereAnneeUnivSessionOuverte === $premiereAnneeUnivSessionInscription) {
                        return false;
                    }
                }
            }
        }
        return true;
    }

    private function canDesinscrire(?Inscription $inscription): bool
    {
        if (!$this->scopeValide($inscription)) return false;
+0 −2
Changes for module/Formation/view/formation/index/index-doctorant.phtml: 0 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -216,8 +216,6 @@ $now = new DateTime();
                                          title="M'inscrire" data-bs-toggle="tooltip" data-bs-html="true"
                                    ></span>&nbsp;M'inscrire
                                </a>
                            <?php else: ?>
                                <span class="icon icon-unchecked" style="color:darkred;" data-bs-toggle="tooltip" title="Vous suivez déjà (ou avez déjà suivi) cette formation lors de cette année universitaire">&nbsp;Impossible de s'inscrire</span>
                            <?php endif;
                        endif; ?>
                    </td>
+1 −1
Changes for module/Formation/view/formation/session/afficher-fiche.phtml: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -190,7 +190,7 @@ $this->headTitle($pageTitle);
                <?php else: ?>
                    <span class=" <?php if ($seance->estHistorise()) echo " historise text-danger "; ?>"
                              data-bs-toggle="tooltip"
                              title="Le lieu sera visible lorsque vous se serez inscrit à cette session">
                              title="Le lieu sera visible lorsque vous serez inscrit à cette session">
                <?php endif; ?>
                <?php echo $canVoirLieuSession ? $seance->getLieu() : "<i>Non visible</i>"; ?>
                <?php if ($seance->getDescription() !== null) : ?>