Commit 2012cad7 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Formations suivies : rétablissement de l'accès au dépôt de justificatif d'absence.

parent f1133c60
Loading
Loading
Loading
Loading
+4 −0
Changes for CHANGELOG.md: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
Journal des modifications
=========================

13.5.0
------
- [FIX] Formations suivies : rétablissement de l'accès au dépôt de justificatif d'absence.

13.4.0
------
- Possibilité de créer une thèse à partir d'un dossier d'admission validé (depuis la page de recherche de dossiers).
+3 −6
Changes for module/Formation/src/Formation/Controller/IndexController.php: 3 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -9,13 +9,11 @@ use Doctorant\Entity\Db\Doctorant;
use Doctorant\Service\DoctorantServiceAwareTrait;
use Formation\Entity\Db\Etat;
use Formation\Entity\Db\FormationExterne;
use Formation\Entity\Db\Inscription;
use Formation\Entity\Db\Session;
use Formation\Facade\Inscription\InscriptionFacadeAwareTrait;
use Formation\Provider\Parametre\FormationParametres;
use Formation\Provider\Validation\TypeValidation;
use Formation\Service\Formation\FormationExterne\FormationExterneServiceAwareTrait;
use Formation\Service\Justificatif\JustificatifServiceAwareTrait;
use Formation\Service\Inscription\InscriptionServiceAwareTrait;
use Formation\Service\Session\SessionServiceAwareTrait;
use Formation\Service\Validation\ValidationFormationExterne\ValidationFormationExterneServiceAwareTrait;
use Individu\Entity\Db\Individu;
@@ -39,6 +37,7 @@ class IndexController extends AbstractController
    use SessionServiceAwareTrait;
    use SousCompetenceServiceAwareTrait;
    use InscriptionFacadeAwareTrait;
    use InscriptionServiceAwareTrait;

    public function indexAction() : ViewModel
    {
@@ -62,9 +61,7 @@ class IndexController extends AbstractController
            // formations ouvertes et en préparation SANS CRITÈRES DE DATES pour afficher aussi celles de l'année univ suivantes
            $ouvertes = $this->sessionService->getRepository()->findSessionsByDoctorant($doctorant, Etat::CODE_OUVERTE, verifDatePublication: true);
            $preparations = $this->sessionService->getRepository()->findSessionsByDoctorant($doctorant, Etat::CODE_PREPARATION, verifDatePublication: true);

            $inscriptionsAbsenceInjustifiees = [];

            $inscriptionsAbsenceInjustifiees = $this->inscriptionService->getInscriptionsTermineesAvecAbsenceInjustifiee($doctorant);
            $formationsExternes = $this->formationExterneService->getRepository()->fetchFormationsExternesByDoctorant($doctorant, 'debut', 'ASC', true);
            $formationsExternesAvecAnneeUniv = $this->getFormationsExternesAvecAnneeUniv($formationsExternes, $anneeUnivCourante);
        } else {
+8 −7
Changes for module/Formation/src/Formation/Controller/IndexControllerFactory.php: 8 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -6,19 +6,18 @@ use Application\Service\AnneeUniv\AnneeUnivService;
use Doctorant\Service\DoctorantService;
use Doctrine\ORM\EntityManager;
use Formation\Facade\Inscription\InscriptionFacade;
use Formation\Service\Inscription\InscriptionService;
use Formation\Service\Justificatif\JustificatifService;
use Formation\Service\Formation\FormationExterne\FormationExterneService;
use Formation\Service\Inscription\InscriptionService;
use Formation\Service\Session\SessionService;
use Formation\Service\Validation\ValidationFormationExterne\ValidationFormationExterneService;
use Interop\Container\ContainerInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
use RNCP\Service\SousCompetence\SousCompetenceService;
use UnicaenParametre\Service\Parametre\ParametreService;

class IndexControllerFactory {

class IndexControllerFactory
{
    /**
     * @param ContainerInterface $container
     * @return IndexController
@@ -34,7 +33,6 @@ class IndexControllerFactory {
         * @var AnneeUnivService $anneeUnivService
         * @var FormationExterneService $formationExterneService
         * @var ValidationFormationExterneService $validationFormationExterneService
         * @var JustificatifService $justificatifService
         * @var SessionService $sessionService
         * @var SousCompetenceService $sousCompetenceService
         * @var InscriptionFacade $inscriptionFacade
@@ -45,7 +43,6 @@ class IndexControllerFactory {
        $anneeUnivService = $container->get(AnneeUnivService::class);
        $formationExterneService = $container->get(FormationExterneService::class);
        $validationFormationExterneService = $container->get(ValidationFormationExterneService::class);
        $justificatifService = $container->get(JustificatifService::class);
        $sessionService = $container->get(SessionService::class);
        $sousCompetenceService = $container->get(SousCompetenceService::class);
        $inscriptionFacade = $container->get(InscriptionFacade::class);
@@ -61,6 +58,10 @@ class IndexControllerFactory {
        $controller->setSousCompetenceService($sousCompetenceService);
        $controller->setInscriptionFacade($inscriptionFacade);

        /** @var InscriptionService $inscriptionService */
        $inscriptionService = $container->get(InscriptionService::class);
        $controller->setInscriptionService($inscriptionService);

        return $controller;
    }

+1 −1
Changes for module/Formation/src/Formation/Entity/Db/Repository/InscriptionRepository.php: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ class InscriptionRepository extends EntityRepository

    /**
     * @param Doctorant $doctorant
     * @return array
     * @return \Formation\Entity\Db\Inscription[]
     */
    public function findInscriptionsByDoctorant(Doctorant $doctorant) : array
    {
+27 −1
Changes for module/Formation/src/Formation/Service/Inscription/InscriptionService.php: 27 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -17,7 +17,8 @@ use RNCP\Service\SousCompetence\SousCompetenceServiceAwareTrait;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;

class InscriptionService {
class InscriptionService
{
    use EntityManagerAwareTrait;
    use AnneeUnivServiceAwareTrait;
    use JustificatifServiceAwareTrait;
@@ -136,6 +137,31 @@ class InscriptionService {
        return $qb->getQuery()->getResult();
    }

    /**
     * Recherche les inscriptions d'un doctorant pour lesquelles il existe un absence injustifiée.
     */
    public function getInscriptionsTermineesAvecAbsenceInjustifiee(Doctorant $doctorant): array
    {
        $inscriptions = $this->getRepository()->findInscriptionsByDoctorant($doctorant);

        $inscriptionsAvecAbsenceInjustifiee = [];
        foreach ($inscriptions as $inscription) {
            if (!$inscription->isListePrincipale()) {
                continue;
            }
            $seances = $inscription->getSession()->getSeances()->toArray();
            $seances = array_filter($seances, function ($a) { return $a->estNonHistorise(); });
            $nbSeance = count($seances);
            if ($nbSeance > 0 /**  AND $inscription->getSession()->estTerminee() **/ AND $inscription->getSession()->getEtat()->getCode() === Etat::CODE_CLOTUREE) {
                if ($this->justificatifService->isInscriptionHasAbsenceInjustifiee($inscription)) {
                    $inscriptionsAvecAbsenceInjustifiee[] = $inscription;
                }
            }
        }

        return $inscriptionsAvecAbsenceInjustifiee;
    }

    /**
     * @param callable(Inscription): bool $filtreSpecifique
     */