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

fix ajout sous-compentences à un bloc, affichage sous-compétences d'une formation

parent c3fb15c6
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ use Formation\Controller\InscriptionController;
use Formation\Controller\InscriptionControllerFactory;
use Formation\Controller\Recherche\InscriptionRechercheController;
use Formation\Controller\Recherche\InscriptionRechercheControllerFactory;
use Formation\Facade\Inscription\InscriptionFacade;
use Formation\Facade\Inscription\InscriptionFacadeFactory;
use Formation\Provider\Privilege\InscriptionPrivileges;
use Formation\Service\Exporter\Attestation\AttestationExporter;
use Formation\Service\Exporter\Attestation\AttestationExporterFactory;
@@ -325,7 +327,9 @@ return [
            InscriptionSearchService::class => InscriptionSearchServiceFactory::class,
            AttestationExporter::class => AttestationExporterFactory::class,
            ConvocationExporter::class => ConvocationExporterFactory::class,
            InscriptionAssertion::class => InscriptionAssertionFactory::class
            InscriptionAssertion::class => InscriptionAssertionFactory::class,

            InscriptionFacade::class => InscriptionFacadeFactory::class,
        ],
    ],
    'controllers'     => [
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ class FormationController extends AbstractController
            'formation' => $formation,
            'sessions' => $sessionsAvecAnneeUniv,
            'anneeUnivCourante' => $anneeUnivCourante,
            'anneesUniv' => $this->formationService->getAnneesUnivAsOptions($sessions),
            'anneesUniv' => $this->formationService->getAnneesUnivAsOptions($sessions, true),
            'sousCompetencesAssociees' => $sousCompetencesAssociees,
            'urlFichierPlugin' => $this->urlFichier(),
            'exports' => [$this->formationXlsxExportManager->get(FormationStatsXlsxExport::CODE)],
+12 −52
Original line number Diff line number Diff line
@@ -11,8 +11,8 @@ 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\Service\Justificatif\JustificatifServiceAwareTrait;
use Formation\Provider\Validation\TypeValidation;
use Formation\Service\Formation\FormationExterne\FormationExterneServiceAwareTrait;
use Formation\Service\Validation\ValidationFormationExterne\ValidationFormationExterneServiceAwareTrait;
@@ -33,8 +33,8 @@ class IndexController extends AbstractController
    use AnneeUnivServiceAwareTrait;
    use FormationExterneServiceAwareTrait;
    use ValidationFormationExterneServiceAwareTrait;
    use JustificatifServiceAwareTrait;
    use SousCompetenceServiceAwareTrait;
    use InscriptionFacadeAwareTrait;

    public function indexAction() : ViewModel
    {
@@ -59,52 +59,31 @@ class IndexController extends AbstractController
            $ouvertes = $this->getEntityManager()->getRepository(Session::class)->findSessionsByDoctorant($doctorant, Etat::CODE_OUVERTE, verifDatePublication: true);
            $preparations = $this->getEntityManager()->getRepository(Session::class)->findSessionsByDoctorant($doctorant, Etat::CODE_PREPARATION, verifDatePublication: true);

            /** @var Inscription[] $inscription */
            $inscriptions = $this->getEntityManager()->getRepository(Inscription::class)->findInscriptionsByDoctorant($doctorant);

            $terminees = [];
            $encours = [];
            $inscriptionsAbsenceInjustifiees = [];

            /** @var Inscription $inscription */
            foreach ($inscriptions as $inscription) {
                $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_CLOTURER) {
                    $terminees[] = $inscription;
                    if($this->justificatifService->isInscriptionHasAbsenceInjustifiee($inscription)) $inscriptionsAbsenceInjustifiees[] = $inscription;
                } else {
                    if ($inscription->estNonHistorise()) $encours[] = $inscription;
                }
            }

            $formationsExternes = $this->formationExterneService->getRepository()->fetchFormationsExternesByDoctorant($doctorant, 'debut', 'ASC', true);
            $formationsExternesAvecAnneeUniv = $this->getFormationsExternesAvecAnneeUniv($formationsExternes, $anneeUnivCourante);
        } else {
            $ouvertes = [];
            $preparations = [];
            $inscriptions = [];
            $terminees = [];
            $encours = [];
            $inscriptionsAbsenceInjustifiees = [];
            $formationsExternesAvecAnneeUniv = [];
        }

        return new ViewModel([
        $vm = new ViewModel([
            'doctorant' => $doctorant,
            'ouvertes' => $ouvertes,
            'preparations' => $preparations,
            'terminees' => array_filter($terminees, function (Inscription $a) { return $a->getListe() === Inscription::LISTE_PRINCIPALE; }),
            'encours' => $encours,
            'inscriptions' => $inscriptions,
            'formationsExternes' => $formationsExternesAvecAnneeUniv,
            'anneesUnivFormationsExternes' => $this->formationExterneService->getAnneesUnivAsOptions($formationsExternes),
            'role' => $this->userContextService->getSelectedIdentityRole(),
            'anneeUnivCourante' => $anneeUnivCourante,
            'anneesUniv' => $this->formationExterneService->getAnneesUnivAsOptions($formationsExternes),
            'inscriptionsAbsenceInjustifiees' => $inscriptionsAbsenceInjustifiees,
            'delai' => $this->getParametreService()->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ENQUETE),
        ]);
        $vm->setVariables($this->inscriptionFacade->getVariablesForAffichageInscriptions($doctorant));

        return $vm;
    }

    public function indexFormateurAction() : ViewModel
@@ -143,40 +122,21 @@ class IndexController extends AbstractController

        $anneeUnivCourante = $this->anneeUnivService->courante();

        /** @var Inscription[] $inscription */
        $inscriptions = $this->getEntityManager()->getRepository(Inscription::class)->findInscriptionsByDoctorant($doctorant);

        $terminees = [];
        $encours = [];

        /** @var Inscription $inscription */
        foreach ($inscriptions as $inscription) {
            $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_CLOTURER) {
                $terminees[] = $inscription;
            } else {
                if ($inscription->estNonHistorise()) $encours[] = $inscription;
            }
        }

        $formationsExternes = $this->formationExterneService->getRepository()->fetchFormationsExternesByDoctorant($doctorant, 'debut', 'ASC', true);
        $formationsExternesAvecAnneeUniv = $this->getFormationsExternesAvecAnneeUniv($formationsExternes, $anneeUnivCourante);
        $delai = $this->getParametreService()->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ENQUETE);

        return new ViewModel([
        $vm = new ViewModel([
            'these' => $these,
            'doctorant' => $doctorant,
            'inscriptions' => $inscriptions,
            'terminees' => array_filter($terminees, function (Inscription $a) { return $a->getListe() === Inscription::LISTE_PRINCIPALE; }),
            'encours' => $encours,
            'formationsExternes' => $formationsExternesAvecAnneeUniv,
            'anneesUnivFormationsExternes' => $this->formationExterneService->getAnneesUnivAsOptions($formationsExternes),
            'role' => $this->userContextService->getSelectedIdentityRole(),
            'anneeUnivCourante' => $anneeUnivCourante,
            'anneesUniv' => $this->formationExterneService->getAnneesUnivAsOptions($formationsExternes),
            'delai' => $this->getParametreService()->getValeurForParametre(FormationParametres::CATEGORIE, FormationParametres::DELAI_ENQUETE),
        ]);
        $vm->setVariables($this->inscriptionFacade->getVariablesForAffichageInscriptions($doctorant));

        return $vm;
    }

    /**
+5 −3
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ namespace Formation\Controller;
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\Validation\ValidationFormationExterne\ValidationFormationExterneService;
@@ -31,8 +33,8 @@ class IndexControllerFactory {
         * @var AnneeUnivService $anneeUnivService
         * @var FormationExterneService $formationExterneService
         * @var ValidationFormationExterneService $validationFormationExterneService
         * @var JustificatifService $justificatifService
         * @var SousCompetenceService $sousCompetenceService
         * @var InscriptionFacade $inscriptionFacade
        */
        $entityManager = $container->get('doctrine.entitymanager.orm_default');
        $doctorantService = $container->get(DoctorantService::class);
@@ -40,18 +42,18 @@ class IndexControllerFactory {
        $anneeUnivService = $container->get(AnneeUnivService::class);
        $formationExterneService = $container->get(FormationExterneService::class);
        $validationFormationExterneService = $container->get(ValidationFormationExterneService::class);
        $justificatifService = $container->get(JustificatifService::class);
        $sousCompetenceService = $container->get(SousCompetenceService::class);
        $inscriptionFacade = $container->get(InscriptionFacade::class);

        $controller = new IndexController();
        $controller->setEntityManager($entityManager);
        $controller->setDoctorantService($doctorantService);
        $controller->setParametreService($parametreService);
        $controller->setAnneeUnivService($anneeUnivService);
        $controller->setJustificatifService($justificatifService);
        $controller->setFormationExterneService($formationExterneService);
        $controller->setValidationFormationExterneService($validationFormationExterneService);
        $controller->setSousCompetenceService($sousCompetenceService);
        $controller->setInscriptionFacade($inscriptionFacade);

        return $controller;
    }
+30 −0
Original line number Diff line number Diff line
<?php
namespace Formation\Facade\Inscription;

use Application\Service\AnneeUniv\AnneeUnivServiceAwareTrait;
use Doctorant\Entity\Db\Doctorant;
use Formation\Entity\Db\Etat;
use Formation\Service\Inscription\InscriptionServiceAwareTrait;

class InscriptionFacade
{
    use AnneeUnivServiceAwareTrait;
    use InscriptionServiceAwareTrait;

    public function getVariablesForAffichageInscriptions(Doctorant $doctorant): array
    {
        $anneeUnivCourante = $this->anneeUnivService->courante();

        $inscriptionsTerminees = $this->inscriptionService->getInscriptionsTermineesAvecSousCompetences($doctorant, $anneeUnivCourante, [Etat::CODE_CLOTURER]);
        $inscriptionsEnCours = $this->inscriptionService->getInscriptionsEnCoursAvecSousCompetences($doctorant, $anneeUnivCourante, [Etat::CODE_CLOTURER]);

        return [
            'inscriptionsTerminees' => $inscriptionsTerminees,
            'anneesUnivInscriptionsTerminees' => $this->inscriptionService->getAnneesUnivAsOptions(array_map(
                fn($item) => $item['inscription'],
                $inscriptionsTerminees
            )),
            'inscriptionsEnCours' => $inscriptionsEnCours,
        ];
    }
}
 No newline at end of file
Loading