Commit 5c48a772 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Inscriptions administratives importées : pas de plantage mais avertissement si...

Inscriptions administratives importées : pas de plantage mais avertissement si plusieurs dossiers d'admission sont trouvés.
parent 0a525964
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ Journal des modifications
------
- Formations : petites améliorations concernant les enquêtes.
- Inscriptions administratives importées : ajout d'un error_log en cas d'échec du traitement de l'inscription.
- Inscriptions administratives importées : pas de plantage mais avertissement si plusieurs dossiers d'admission sont trouvés.
- Saise d'une thèse : recherche/utilisation d'un éventuel doctorant existant en cas de création ; impossible de changer le doctorant d'une thèse existante ; meilleure remontée/affichage d'erreur.
- Admission : ajout du bouton de suppression d'un dossier d'admission dans le formulaire de modification.
- [FIX] Formations suivies : les inscriptions sans réponse à l'enquête étaient écartées à tort.
+5 −0
Changes for module/Admission/src/Admission/Entity/Db/Etat.php: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -30,6 +30,11 @@ class Etat
        return $this->libelle;
    }

    public function estValide(): bool
    {
        return $this->code === self::CODE_VALIDE;
    }

    /**
     * @return string
     */
+8 −23
Changes for module/Admission/src/Admission/Entity/Db/Repository/AdmissionRepository.php: 8 added lines, 23 removed lines.
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use Doctrine\ORM\NonUniqueResultException;
use Doctrine\ORM\Query\Expr\Join;
use Individu\Entity\Db\Individu;
use Laminas\Mvc\Controller\AbstractActionController;
use RuntimeException;

class AdmissionRepository extends DefaultEntityRepository
{
@@ -36,7 +37,7 @@ class AdmissionRepository extends DefaultEntityRepository
        try {
            return $qb->getQuery()->getOneOrNullResult();
        } catch (NonUniqueResultException $e) {
            throw new \RuntimeException("Anomalie : plus d'1 admission trouvée pour cet individu", null, $e);
            throw new RuntimeException("Anomalie : plus d'1 admission trouvée pour cet individu", null, $e);
        }
    }

@@ -53,7 +54,7 @@ class AdmissionRepository extends DefaultEntityRepository
        try {
            return $qb->getQuery()->getOneOrNullResult();
        } catch (NonUniqueResultException $e) {
            throw new \RuntimeException("Anomalie : plus d'1 admission trouvée pour ce doctorant", null, $e);
            throw new RuntimeException("Anomalie : plus d'1 admission trouvée pour ce doctorant", null, $e);
        }
    }

@@ -74,22 +75,10 @@ class AdmissionRepository extends DefaultEntityRepository
        return $this->findOneBy(['id' => $id, 'histoDestruction' => null]);
    }

    public function findOneByNumeroCandidature(string $numeroCandidature): Admission|null
    {
        $qb = $this->createQueryBuilder('a')
            ->join('a.individu', 'i')->addSelect('i')
            ->join('i.source', 'isrc')->addSelect('isrc')
            ->where('a.numeroCandidature = :numeroCandidature')->setParameter('numeroCandidature', $numeroCandidature)
            ->andWhereNotHistorise('a');

        try {
            return $qb->getQuery()->getOneOrNullResult();
        } catch (NonUniqueResultException $e) {
            throw new \RuntimeException("Anomalie : plus d'1 admission trouvée pour ce numéro de candidature", null, $e);
        }
    }

    public function findOneByINE(string $ine): Admission|null
    /**
     * @return Admission[]
     */
    public function findByINE(string $ine): array
    {
        $qb = $this->createQueryBuilder('a')
            ->join('a.individu', 'i')->addSelect('i')
@@ -98,10 +87,6 @@ class AdmissionRepository extends DefaultEntityRepository
            ->where('upper(ae.ine) = upper(:ine)')->setParameter('ine', trim($ine))
            ->andWhereNotHistorise('a');

        try {
            return $qb->getQuery()->getOneOrNullResult();
        } catch (NonUniqueResultException $e) {
            throw new \RuntimeException("Anomalie : plus d'1 admission trouvée pour cet INE", null, $e);
        }
        return $qb->getQuery()->getResult();
    }
}
 No newline at end of file
+76 −45

File changed.

Preview size limit exceeded, changes collapsed.

+4 −2
Changes for module/InscriptionAdministrative/src/InscriptionAdministrative/Controller/InscriptionAdministrativeController.php: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace InscriptionAdministrative\Controller;

use Admission\Entity\Db\Admission;
use Admission\Service\Admission\AdmissionServiceAwareTrait;
use Application\Controller\AbstractController;
use Application\Service\AnneeUniv\AnneeUnivServiceAwareTrait;
@@ -15,6 +16,7 @@ use InscriptionAdministrative\Rule\Reception\ReceptionRulePluginManagerAwareTrai
use InscriptionAdministrative\Service\InscriptionAdministrativeServiceAwareTrait;
use Laminas\Http\Response;
use Laminas\View\Model\ViewModel;
use RuntimeException;
use These\Service\These\TheseServiceAwareTrait;
use UnicaenApp\Traits\MessageAwareInterface;

@@ -46,7 +48,7 @@ class InscriptionAdministrativeController extends AbstractController
        $this->inscriptionAdministrative = $this->inscriptionAdministrativeService->getRepository()->findOneById($id);
        $inscriptionAdministrativeApprenant = $this->inscriptionAdministrative->getInscriptionAdministrativeApprenant();

        $admission = $this->admissionService->getRepository()->findOneByINE($inscriptionAdministrativeApprenant->getINE());
        $admissions = $this->admissionService->getRepository()->findByINE($inscriptionAdministrativeApprenant->getINE());
        try {
            $doctorantTrouveAvecCode = $this->doctorantService->getRepository()->findOneByCodeApprenant($inscriptionAdministrativeApprenant->getCode());
        } catch (NonUniqueDoctorantException $e) {
@@ -66,7 +68,7 @@ class InscriptionAdministrativeController extends AbstractController
        $vm = new ViewModel([
            'inscriptionAdministrative' => $this->inscriptionAdministrative,
            'inscriptionAdministrativeApprenant' => $inscriptionAdministrativeApprenant,
            'admission' => $admission,
            'admissions' => $admissions,
            'doctorantTrouveAvecCode' => $doctorantTrouveAvecCode,
            'doctorantTrouveAvecINE' => $doctorantTrouveAvecINE,
            'anneeUnivService' => $this->anneeUnivService,
Loading