Loading CHANGELOG.md +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). Loading module/Formation/src/Formation/Controller/IndexController.php +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 Loading @@ -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; Loading @@ -39,6 +37,7 @@ class IndexController extends AbstractController use SessionServiceAwareTrait; use SousCompetenceServiceAwareTrait; use InscriptionFacadeAwareTrait; use InscriptionServiceAwareTrait; public function indexAction() : ViewModel { Loading @@ -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 { Loading module/Formation/src/Formation/Controller/IndexControllerFactory.php +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 Loading @@ -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 Loading @@ -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 Loading @@ -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); Loading @@ -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; } Loading module/Formation/src/Formation/Entity/Db/Repository/InscriptionRepository.php +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 Loading @@ -73,7 +73,7 @@ class InscriptionRepository extends EntityRepository /** * @param Doctorant $doctorant * @return array * @return \Formation\Entity\Db\Inscription[] */ public function findInscriptionsByDoctorant(Doctorant $doctorant) : array { Loading module/Formation/src/Formation/Service/Inscription/InscriptionService.php +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 Loading @@ -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; Loading Loading @@ -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 */ Loading Loading
CHANGELOG.md +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). Loading
module/Formation/src/Formation/Controller/IndexController.php +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 Loading @@ -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; Loading @@ -39,6 +37,7 @@ class IndexController extends AbstractController use SessionServiceAwareTrait; use SousCompetenceServiceAwareTrait; use InscriptionFacadeAwareTrait; use InscriptionServiceAwareTrait; public function indexAction() : ViewModel { Loading @@ -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 { Loading
module/Formation/src/Formation/Controller/IndexControllerFactory.php +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 Loading @@ -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 Loading @@ -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 Loading @@ -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); Loading @@ -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; } Loading
module/Formation/src/Formation/Entity/Db/Repository/InscriptionRepository.php +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 Loading @@ -73,7 +73,7 @@ class InscriptionRepository extends EntityRepository /** * @param Doctorant $doctorant * @return array * @return \Formation\Entity\Db\Inscription[] */ public function findInscriptionsByDoctorant(Doctorant $doctorant) : array { Loading
module/Formation/src/Formation/Service/Inscription/InscriptionService.php +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 Loading @@ -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; Loading Loading @@ -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 */ Loading