Commit 8717c4e2 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

Merge branch 'feature_modif_process_annee_rapport_act' into release_8.1.0

parents f6c99aa6 94a48d7b
Loading
Loading
Loading
Loading
+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
@@ -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;
@@ -12,6 +14,7 @@ use UnicaenApp\Service\EntityManagerAwareTrait;

class InscriptionService {
    use EntityManagerAwareTrait;
    use AnneeUnivServiceAwareTrait;

    /**
     * @return InscriptionRepository
@@ -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
+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
@@ -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;
@@ -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
+2 −1
Changes for module/RapportActivite/config/module.config.php: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -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',
+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
@@ -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':
@@ -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.");
        }
    }
+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
@@ -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;

@@ -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];
@@ -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);
@@ -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()]),
        ]);
    }
@@ -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()) {
@@ -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