Commit ce183bc0 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Plantage des notifications à propos des résultats de thèse passant à...

[FIX] Plantage des notifications à propos des résultats de thèse passant à Admis (iterator vide à cause d'un critère de filtrage erroné).
parent 1e53b0f7
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ Journal des modifications
- FichierViewHelper : refactorisation pour ajouter des setters ; ajout de règles dans app.scss pour abandon de classes bootstrap ; plus de sobriété dans les styles.
- FichierViewHelper : plus qu'un seul argument dans __invoke() donc utilisation des setters ; cosmétique pour le nom du fichier.
- Traitement d'une inscription administrative reçue : précision lorsque le dossier d'admission trouvé est lié à un doctorant.
- [FIX] Plantage des notifications à propos des résultats de thèse passant à Admis (iterator vide à cause d'un critère de filtrage erroné).
- [FIX] TheseEtatRule : suppression d'une vérif empêchant la validation de la thèse corrigée par le président du jury (Transition d'état impossible : S → E).
- [FIX] Ajout du critère de la Source dans la recherche d'origine de financement par code.
- [BDD] Vue src_these : ajout de la jointure avec la table pays pour tenter d'alimenter la colonne pays_cotut_id.
+7 −7
Changes for module/Import/src/Import/Model/Service/ImportObservResultService.php: 7 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -128,9 +128,8 @@ class ImportObservResultService extends \UnicaenDbImport\Entity\Db\Service\Impor
        foreach ($importObservResults as $ior) {
            if ($ior->isDateLimiteNotifDepassee()) {
                $this->logger->info(sprintf(
                    "Le ImportObservResult %d de la thèse '%s' est écarté car la date limite de notif est dépassée (%s).",
                    $ior->getId(),
                    $ior->getSourceCode(),
                    "%s >> Écarté car la date limite de notif est dépassée (%s).",
                    $ior,
                    $ior->getDateLimiteNotif()->format(Constants::DATETIME_FORMAT)
                ));
                continue;
@@ -149,7 +148,8 @@ class ImportObservResultService extends \UnicaenDbImport\Entity\Db\Service\Impor

            $data->offsetSet($these, [
                'importObservResult' => $ior,
                'to' => trim($ior->getResultatToString()),
                'from' => '',
                'to' => These::RESULTAT_ADMIS,
            ]);
        }

@@ -253,9 +253,8 @@ class ImportObservResultService extends \UnicaenDbImport\Entity\Db\Service\Impor
        foreach ($importObservResults as $ior) {
            if ($ior->isDateLimiteNotifDepassee()) {
                $this->logger->info(sprintf(
                    "Le ImportObservResult %d de la thèse '%s' est écarté car la date limite de notif est dépassée (%s).",
                    $ior->getId(),
                    $ior->getSourceCode(),
                    "%s >> Écarté car la date limite de notif est dépassée (%s).",
                    $ior,
                    $ior->getDateLimiteNotif()->format(Constants::DATETIME_FORMAT)
                ));
                continue;
@@ -274,6 +273,7 @@ class ImportObservResultService extends \UnicaenDbImport\Entity\Db\Service\Impor

            $data->offsetSet($these, [
                'importObservResult' => $ior,
                'from' => '',
                'to' => trim($ior->getResultatToString()),
            ]);
        }
+4 −1
Changes for module/These/src/These/EventListener/Resultat/TheseResultatUpdateEventListener.php: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ class TheseResultatUpdateEventListener implements ListenerAggregateInterface
    {
        // on s'intéresse uniquement à un passage du résultat à la valeur "Admis".
        $data = $this->filterDataByResultatAdmis($event->getData());
        if ($data->count() === 0) {
            return;
        }

        $this->theseResultatAdmisNotificationService->setLogger($event->getLogger());
        try {
@@ -57,7 +60,7 @@ class TheseResultatUpdateEventListener implements ListenerAggregateInterface
            $these = $data->current();
            $info = $data->getInfo();
            // on s'intéresse uniquement à un passage du résultat à la valeur "Admis".
            if ($info['to'] !== $info['from'] && $info['to'] === These::RESULTAT_ADMIS) {
            if ($info['to'] !== ($info['from'] ?? null) && $info['to'] === These::RESULTAT_ADMIS) {
                $filteredData->offsetSet($these, $info);
            }
            $data->next();
+4 −0
Changes for module/These/src/These/Notification/Factory/TheseNotificationFactory.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -29,7 +29,11 @@ class TheseNotificationFactory extends NotificationFactory
    public function createNotificationChangementResultatThesesGestionnaires(SplObjectStorage $data): Notification
    {
        // obtention des adresses de destination : on les déduit de la 1ere thèse seulement ! :-/

        $data->rewind();
        if (!$data->valid()) {
            throw new AucunDestinataireException("Impossible de déterminer les destinataires car les données sont vides");
        }
        /** @var \These\Entity\Db\These $these */
        $these = $data->current();
        $emailsBdd = $this->emailService->fetchEmailAspectsDoctorat($these);