Loading module/Formation/src/Formation/Service/Inscription/InscriptionService.php +6 −3 Changes for module/Formation/src/Formation/Service/Inscription/InscriptionService.php: 6 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Formation\Service\Inscription; use Application\Entity\AnneeUniv; use Application\Service\AnneeUniv\AnneeUnivServiceAwareTrait; use DateTime; use Doctorant\Entity\Db\Doctorant; use Doctrine\ORM\ORMException; Loading @@ -12,6 +14,7 @@ use UnicaenApp\Service\EntityManagerAwareTrait; class InscriptionService { use EntityManagerAwareTrait; use AnneeUnivServiceAwareTrait; /** * @return InscriptionRepository Loading Loading @@ -116,13 +119,13 @@ class InscriptionService { } if ($annee !== null) { $debut = DateTime::createFromFormat('d/m/Y','01/09/'.($annee-1)); $fin = DateTime::createFromFormat('d/m/Y','31/08/'.($annee)); $annee = AnneeUniv::fromPremiereAnnee($annee); $debut = $this->anneeUnivService->computeDateDebut($annee); $fin = $this->anneeUnivService->computeDateFin($annee);; $qb ->andWhere('seance.debut >= :debut')->setParameter('debut', $debut) ->andWhere('seance.fin <= :fin')->setParameter('fin', $fin); } return $qb->getQuery()->getResult(); } } No newline at end of file module/Formation/src/Formation/Service/Inscription/InscriptionServiceFactory.php +4 −0 Changes for module/Formation/src/Formation/Service/Inscription/InscriptionServiceFactory.php: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Formation\Service\Inscription; use Application\Service\AnneeUniv\AnneeUnivService; use Doctrine\ORM\EntityManager; use Interop\Container\ContainerInterface; use Psr\Container\ContainerExceptionInterface; Loading @@ -22,8 +23,11 @@ class InscriptionServiceFactory { */ $entitymanager = $container->get('doctrine.entitymanager.orm_default'); $anneeUnivService = $container->get(AnneeUnivService::class); $service = new InscriptionService(); $service->setEntityManager($entitymanager); $service->setAnneeUnivService($anneeUnivService); return $service; } } No newline at end of file module/RapportActivite/config/module.config.php +2 −1 Changes for module/RapportActivite/config/module.config.php: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -420,10 +420,11 @@ return [ 'ajouter' => [ 'type' => 'Segment', 'options' => [ 'route' => '/ajouter/:these/:estFinContrat', 'route' => '/ajouter/:these/:estFinContrat/:anneeUniv', 'constraints' => [ 'these' => '\d+', 'estFinContrat' => '[0-1]', 'anneeUniv' => '\d{4}', ], 'defaults' => [ 'action' => 'ajouter', Loading module/RapportActivite/src/RapportActivite/Assertion/RapportActiviteAssertion.php +8 −3 Changes for module/RapportActivite/src/RapportActivite/Assertion/RapportActiviteAssertion.php: 8 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -119,7 +119,8 @@ class RapportActiviteAssertion extends AbstractAssertion switch ($action) { case 'ajouter': $this->assertCreationPossible(); $anneeUniv = $this->getRouteMatch()->getParam('anneeUniv'); $this->assertCreationPossible($anneeUniv); break; case 'modifier': Loading Loading @@ -252,15 +253,19 @@ class RapportActiviteAssertion extends AbstractAssertion return true; } private function assertCreationPossible() private function assertCreationPossible(int $anneeUniv) { $these = $this->getRequestedThese(); $rapportsTeleverses = $this->rapportActiviteService->findRapportsForThese($these); $anneesUnivs = $these->getAnneesUnivInscription(); $this->rapportActiviteCreationRule->setRapportsExistants($rapportsTeleverses); $this->rapportActiviteCreationRule->setAnneesUnivs($anneesUnivs->toArray()); $this->rapportActiviteCreationRule->execute(); if (!$this->rapportActiviteCreationRule->isCreationPossible()) { $estFinContrat = $this->getRouteMatch()->getParam('estFinContrat'); if (!$this->rapportActiviteCreationRule->isCreationPossible($anneeUniv, $estFinContrat)) { throw new FailedAssertionException("La création n'est pas possible."); } } Loading module/RapportActivite/src/RapportActivite/Controller/RapportActiviteController.php +27 −2 Changes for module/RapportActivite/src/RapportActivite/Controller/RapportActiviteController.php: 27 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ use RapportActivite\Service\Fichier\RapportActiviteFichierServiceAwareTrait; use RapportActivite\Service\RapportActiviteServiceAwareTrait; use SplObjectStorage; use These\Entity\Db\These; use These\Entity\Db\TheseAnneeUniv; use These\Service\TheseAnneeUniv\TheseAnneeUnivServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; Loading Loading @@ -74,6 +75,13 @@ class RapportActiviteController extends AbstractController $this->rapportActiviteCreationRule->setRapportsExistants($this->rapports); $this->rapportActiviteCreationRule->execute(); $anneesUnivs = $this->these->getAnneesUnivInscription(); $this->rapportActiviteCreationRule->setAnneesUnivs($anneesUnivs->toArray()); $anneesUnivsPossiblesPourRapportAnnuel = $this->rapportActiviteCreationRule->getAnneesUnivsDisponiblesPourRapportAnnuel(); sort($anneesUnivsPossiblesPourRapportAnnuel); $anneesUnivsPossiblesPourRapportFinContrat = $this->rapportActiviteCreationRule->getAnneesUnivsDisponiblesPourRapportFinContrat(); sort($anneesUnivsPossiblesPourRapportFinContrat); $typesRapportPossiblesData = []; if ($this->rapportActiviteCreationRule->canCreateRapportAnnuel()) { $typesRapportPossiblesData[] = ['label' => RapportActivite::LIBELLE_ANNUEL, 'value' => 0]; Loading @@ -82,6 +90,18 @@ class RapportActiviteController extends AbstractController $typesRapportPossiblesData[] = ['label' => RapportActivite::LIBELLE_FIN_CONTRAT, 'value' => 1]; } $typeRapportPossiblesOptions = []; foreach ($typesRapportPossiblesData as $typeRapportPossible) { $typeRapport = []; $label = $typeRapportPossible["label"]; if ($label === RapportActivite::LIBELLE_ANNUEL || $label === RapportActivite::LIBELLE_FIN_CONTRAT) { $typeRapport['label'] = $label; $typeRapport['value'] = $typeRapportPossible["value"]; $typeRapport['options'] = $label === RapportActivite::LIBELLE_ANNUEL ? $anneesUnivsPossiblesPourRapportAnnuel : $anneesUnivsPossiblesPourRapportFinContrat; $typeRapportPossiblesOptions[] = $typeRapport; } } $operationss = []; foreach ($this->rapports as $rapport) { $this->rapportActiviteOperationRule->injectOperationPossible($rapport); Loading @@ -94,7 +114,7 @@ class RapportActiviteController extends AbstractController 'typesRapportPossiblesData' => $typesRapportPossiblesData, 'operationss' => $operationss, 'campagneDepotDates' => $this->rapportActiviteService->fetchParametresCampagneDepotDates(), 'typeRapportPossiblesOptions' => $typeRapportPossiblesOptions, 'returnUrl' => $this->url()->fromRoute('rapport-activite/lister', ['these' => $this->these->getId()]), ]); } Loading @@ -120,16 +140,21 @@ class RapportActiviteController extends AbstractController { $this->these = $this->requestedThese(); $estFinContrat = (bool)$this->params('estFinContrat'); $anneeUniv = $this->params('anneeUniv'); $rapport = $this->rapportActiviteService->newRapportActivite($this->these); $rapport->setEstFinContrat($estFinContrat); $rapport->setAnneeUniv($anneeUniv); // Si ce n'est pas le doctorant qui est connecté, on actionne le témoin "rapport créé par le dir de thèse". $rapport->setParDirecteurThese($this->userContextService->getSelectedRoleDoctorant() === null); $form = $rapport->estFinContrat() ? $this->finContratForm : $this->annuelForm; $this->initForm($form, $rapport); $form->bind($rapport); $form->get("anneeUniv")->setValue($anneeUniv); $form->setAnneesUnivsReadonly(); $request = $this->getRequest(); if ($request->isPost()) { Loading Loading @@ -321,7 +346,7 @@ class RapportActiviteController extends AbstractController // - soit modifier le comportement du formulaire pour faire saisir d'abord l'année seule (.e. validation group) // et ensuite le formulaire entier (avec année grisée) initialisé avec les formations de l'année choisie. // Cf. AnneeUnivService pour les bornes de début et de fin d'une année univ. $formationInscriptions = $this->inscriptionService->getInscriptionByDoctorantAndAnnee($rapportActivite->getThese()->getDoctorant()); $formationInscriptions = $this->inscriptionService->getInscriptionByDoctorantAndAnnee($rapportActivite->getThese()->getDoctorant(), null, $rapportActivite->getAnneeUniv()->getPremiereAnnee()); $rapportActivite->setFormationsFromInscriptions($formationInscriptions); if ($rapportActivite->estFinContrat() && !$this->rapportActiviteCreationRule->canCreateRapportFinContrat() || Loading Loading
module/Formation/src/Formation/Service/Inscription/InscriptionService.php +6 −3 Changes for module/Formation/src/Formation/Service/Inscription/InscriptionService.php: 6 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ namespace Formation\Service\Inscription; use Application\Entity\AnneeUniv; use Application\Service\AnneeUniv\AnneeUnivServiceAwareTrait; use DateTime; use Doctorant\Entity\Db\Doctorant; use Doctrine\ORM\ORMException; Loading @@ -12,6 +14,7 @@ use UnicaenApp\Service\EntityManagerAwareTrait; class InscriptionService { use EntityManagerAwareTrait; use AnneeUnivServiceAwareTrait; /** * @return InscriptionRepository Loading Loading @@ -116,13 +119,13 @@ class InscriptionService { } if ($annee !== null) { $debut = DateTime::createFromFormat('d/m/Y','01/09/'.($annee-1)); $fin = DateTime::createFromFormat('d/m/Y','31/08/'.($annee)); $annee = AnneeUniv::fromPremiereAnnee($annee); $debut = $this->anneeUnivService->computeDateDebut($annee); $fin = $this->anneeUnivService->computeDateFin($annee);; $qb ->andWhere('seance.debut >= :debut')->setParameter('debut', $debut) ->andWhere('seance.fin <= :fin')->setParameter('fin', $fin); } return $qb->getQuery()->getResult(); } } No newline at end of file
module/Formation/src/Formation/Service/Inscription/InscriptionServiceFactory.php +4 −0 Changes for module/Formation/src/Formation/Service/Inscription/InscriptionServiceFactory.php: 4 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Formation\Service\Inscription; use Application\Service\AnneeUniv\AnneeUnivService; use Doctrine\ORM\EntityManager; use Interop\Container\ContainerInterface; use Psr\Container\ContainerExceptionInterface; Loading @@ -22,8 +23,11 @@ class InscriptionServiceFactory { */ $entitymanager = $container->get('doctrine.entitymanager.orm_default'); $anneeUnivService = $container->get(AnneeUnivService::class); $service = new InscriptionService(); $service->setEntityManager($entitymanager); $service->setAnneeUnivService($anneeUnivService); return $service; } } No newline at end of file
module/RapportActivite/config/module.config.php +2 −1 Changes for module/RapportActivite/config/module.config.php: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -420,10 +420,11 @@ return [ 'ajouter' => [ 'type' => 'Segment', 'options' => [ 'route' => '/ajouter/:these/:estFinContrat', 'route' => '/ajouter/:these/:estFinContrat/:anneeUniv', 'constraints' => [ 'these' => '\d+', 'estFinContrat' => '[0-1]', 'anneeUniv' => '\d{4}', ], 'defaults' => [ 'action' => 'ajouter', Loading
module/RapportActivite/src/RapportActivite/Assertion/RapportActiviteAssertion.php +8 −3 Changes for module/RapportActivite/src/RapportActivite/Assertion/RapportActiviteAssertion.php: 8 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -119,7 +119,8 @@ class RapportActiviteAssertion extends AbstractAssertion switch ($action) { case 'ajouter': $this->assertCreationPossible(); $anneeUniv = $this->getRouteMatch()->getParam('anneeUniv'); $this->assertCreationPossible($anneeUniv); break; case 'modifier': Loading Loading @@ -252,15 +253,19 @@ class RapportActiviteAssertion extends AbstractAssertion return true; } private function assertCreationPossible() private function assertCreationPossible(int $anneeUniv) { $these = $this->getRequestedThese(); $rapportsTeleverses = $this->rapportActiviteService->findRapportsForThese($these); $anneesUnivs = $these->getAnneesUnivInscription(); $this->rapportActiviteCreationRule->setRapportsExistants($rapportsTeleverses); $this->rapportActiviteCreationRule->setAnneesUnivs($anneesUnivs->toArray()); $this->rapportActiviteCreationRule->execute(); if (!$this->rapportActiviteCreationRule->isCreationPossible()) { $estFinContrat = $this->getRouteMatch()->getParam('estFinContrat'); if (!$this->rapportActiviteCreationRule->isCreationPossible($anneeUniv, $estFinContrat)) { throw new FailedAssertionException("La création n'est pas possible."); } } Loading
module/RapportActivite/src/RapportActivite/Controller/RapportActiviteController.php +27 −2 Changes for module/RapportActivite/src/RapportActivite/Controller/RapportActiviteController.php: 27 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ use RapportActivite\Service\Fichier\RapportActiviteFichierServiceAwareTrait; use RapportActivite\Service\RapportActiviteServiceAwareTrait; use SplObjectStorage; use These\Entity\Db\These; use These\Entity\Db\TheseAnneeUniv; use These\Service\TheseAnneeUniv\TheseAnneeUnivServiceAwareTrait; use UnicaenApp\Exception\RuntimeException; Loading Loading @@ -74,6 +75,13 @@ class RapportActiviteController extends AbstractController $this->rapportActiviteCreationRule->setRapportsExistants($this->rapports); $this->rapportActiviteCreationRule->execute(); $anneesUnivs = $this->these->getAnneesUnivInscription(); $this->rapportActiviteCreationRule->setAnneesUnivs($anneesUnivs->toArray()); $anneesUnivsPossiblesPourRapportAnnuel = $this->rapportActiviteCreationRule->getAnneesUnivsDisponiblesPourRapportAnnuel(); sort($anneesUnivsPossiblesPourRapportAnnuel); $anneesUnivsPossiblesPourRapportFinContrat = $this->rapportActiviteCreationRule->getAnneesUnivsDisponiblesPourRapportFinContrat(); sort($anneesUnivsPossiblesPourRapportFinContrat); $typesRapportPossiblesData = []; if ($this->rapportActiviteCreationRule->canCreateRapportAnnuel()) { $typesRapportPossiblesData[] = ['label' => RapportActivite::LIBELLE_ANNUEL, 'value' => 0]; Loading @@ -82,6 +90,18 @@ class RapportActiviteController extends AbstractController $typesRapportPossiblesData[] = ['label' => RapportActivite::LIBELLE_FIN_CONTRAT, 'value' => 1]; } $typeRapportPossiblesOptions = []; foreach ($typesRapportPossiblesData as $typeRapportPossible) { $typeRapport = []; $label = $typeRapportPossible["label"]; if ($label === RapportActivite::LIBELLE_ANNUEL || $label === RapportActivite::LIBELLE_FIN_CONTRAT) { $typeRapport['label'] = $label; $typeRapport['value'] = $typeRapportPossible["value"]; $typeRapport['options'] = $label === RapportActivite::LIBELLE_ANNUEL ? $anneesUnivsPossiblesPourRapportAnnuel : $anneesUnivsPossiblesPourRapportFinContrat; $typeRapportPossiblesOptions[] = $typeRapport; } } $operationss = []; foreach ($this->rapports as $rapport) { $this->rapportActiviteOperationRule->injectOperationPossible($rapport); Loading @@ -94,7 +114,7 @@ class RapportActiviteController extends AbstractController 'typesRapportPossiblesData' => $typesRapportPossiblesData, 'operationss' => $operationss, 'campagneDepotDates' => $this->rapportActiviteService->fetchParametresCampagneDepotDates(), 'typeRapportPossiblesOptions' => $typeRapportPossiblesOptions, 'returnUrl' => $this->url()->fromRoute('rapport-activite/lister', ['these' => $this->these->getId()]), ]); } Loading @@ -120,16 +140,21 @@ class RapportActiviteController extends AbstractController { $this->these = $this->requestedThese(); $estFinContrat = (bool)$this->params('estFinContrat'); $anneeUniv = $this->params('anneeUniv'); $rapport = $this->rapportActiviteService->newRapportActivite($this->these); $rapport->setEstFinContrat($estFinContrat); $rapport->setAnneeUniv($anneeUniv); // Si ce n'est pas le doctorant qui est connecté, on actionne le témoin "rapport créé par le dir de thèse". $rapport->setParDirecteurThese($this->userContextService->getSelectedRoleDoctorant() === null); $form = $rapport->estFinContrat() ? $this->finContratForm : $this->annuelForm; $this->initForm($form, $rapport); $form->bind($rapport); $form->get("anneeUniv")->setValue($anneeUniv); $form->setAnneesUnivsReadonly(); $request = $this->getRequest(); if ($request->isPost()) { Loading Loading @@ -321,7 +346,7 @@ class RapportActiviteController extends AbstractController // - soit modifier le comportement du formulaire pour faire saisir d'abord l'année seule (.e. validation group) // et ensuite le formulaire entier (avec année grisée) initialisé avec les formations de l'année choisie. // Cf. AnneeUnivService pour les bornes de début et de fin d'une année univ. $formationInscriptions = $this->inscriptionService->getInscriptionByDoctorantAndAnnee($rapportActivite->getThese()->getDoctorant()); $formationInscriptions = $this->inscriptionService->getInscriptionByDoctorantAndAnnee($rapportActivite->getThese()->getDoctorant(), null, $rapportActivite->getAnneeUniv()->getPremiereAnnee()); $rapportActivite->setFormationsFromInscriptions($formationInscriptions); if ($rapportActivite->estFinContrat() && !$this->rapportActiviteCreationRule->canCreateRapportFinContrat() || Loading