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

[FIX] Destinataires de la notification de demande de validation d'une...

[FIX] Destinataires de la notification de demande de validation d'une proposition de soutenance : adresse mail 'aspects doctorat' de l'établissement d'inscription, plutôt que la liste des individus ayant le rôle BDD obsolète.
parent 0242a05f
Loading
Loading
Loading
Loading
+2 −0
Changes for CHANGELOG.md: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ Journal des modifications
- [FIX] Correction d'un bug empêchant la création d'établissement ; améliorations des validateurs des formulaires de structures.
- [FIX] Correction de bugs en cas d'utilisateur ayant à la fois le rôle Doctorant et un autre rôle.
- [FIX] Correction du plantage survenant dans RapportActiviteAssertion (interrogée par la navigation) lorsque l'utilisateur n'est pas authentifié.
- [FIX] Destinataires de la notification de demande de validation d'une proposition de soutenance : adresse mail "aspects doctorat"
  de l'établissement d'inscription, plutôt que la liste des individus ayant le rôle BDD obsolète.
- Complétion des qualités du jury sur la page de couverture avec le dossier de soutenance si manquante dans la donnée source
- Remise en place du menu de gestion des qualités
- Mise à jour de la doc et des scripts d'install de la base de données.
+10 −26
Changes for module/Soutenance/src/Soutenance/Controller/PropositionController.php: 10 added lines, 26 removed lines.
Original line number Diff line number Diff line
@@ -142,14 +142,8 @@ class PropositionController extends AbstractController
        if ($these->getUniteRecherche() !== null) {
            $uniteResponsables = $this->getRoleService()->findIndividuRoleByStructure($these->getUniteRecherche()->getStructure(), null, $these->getEtablissement());
        }
        /** @var IndividuRole[] $etablissementResponsables */
        $etablissementResponsables = [];
        if ($these->getEtablissement() !== null) {
            $etablissementResponsables = $this->roleService->findIndividuRoleByStructure($these->getEtablissement()->getStructure(), null, $these->getEtablissement());
            $etablissementResponsables = array_filter($etablissementResponsables, function (IndividuRole $ir) {
                return $ir->getRole()->getCode() === Role::CODE_BDD;
            });
        }
        $notif = $this->soutenanceNotificationFactory->createNotificationBureauDesDoctoratsProposition($these);
        $emailsAspectDoctorats = $notif->getTo();
        $informationsOk = true;
        $directeurs = $this->getActeurService()->getRepository()->findEncadrementThese($these);
        foreach ($directeurs as $directeur) {
@@ -160,33 +154,19 @@ class PropositionController extends AbstractController
        }
        if (empty($uniteResponsables)) $informationsOk = false;
        foreach ($uniteResponsables as $uniteResponsable) {
            if ($uniteResponsable->getIndividu()->getEmailPro() === null) {
            if ($uniteResponsable->getIndividu()->getEmailPro() === null and $uniteResponsable->getIndividu()->getComplement() === null) {
                $informationsOk = false;
                break;
            }
        }
        if (empty($ecoleResponsables)) $informationsOk = false;
        foreach ($ecoleResponsables as $ecoleResponsable) {
            if ($ecoleResponsable->getIndividu()->getEmailPro() === null) {
                $informationsOk = false;
                break;
            }
        }
        if (empty($etablissementResponsables)) $informationsOk = false;
        foreach ($etablissementResponsables as $etablissementResponsable) {
            if ($etablissementResponsable->getIndividu()->getEmailPro() === null) {
                $informationsOk = false;
                break;
            }
        }
        /** @var Individu $individu */
        foreach (array_merge($ecoleResponsables, $uniteResponsables, $etablissementResponsables) as $ecoleResponsable) {
            $individu = $ecoleResponsable->getIndividu();
            if ($individu->getEmailPro() === null and $individu->getComplement() === null) {
            if ($ecoleResponsable->getIndividu()->getEmailPro() === null and $ecoleResponsable->getIndividu()->getComplement() === null) {
                $informationsOk = false;
                break;
            }
        }
        if (empty($emailsAspectDoctorats)) $informationsOk = false;

        /** Récupération des éléments liés au bloc 'intégrité scientifique' */
        $attestationsIntegriteScientifique = $this->getJustificatifService()->getJustificatifsByPropositionAndNature($proposition, NatureFichier::CODE_FORMATION_INTEGRITE_SCIENTIFIQUE);
@@ -222,7 +202,7 @@ class PropositionController extends AbstractController

            'ecoleResponsables' => $ecoleResponsables,
            'uniteResponsables' => $uniteResponsables,
            'etablissementResponsables' => $etablissementResponsables,
            'emailsAspectDoctorats' => $emailsAspectDoctorats,
            'informationsOk' => $informationsOk,
            'avis' => $this->getAvisService()->getAvisByThese($these),

@@ -518,6 +498,10 @@ class PropositionController extends AbstractController
                $this->getValidationService()->validateValidationED($these, $individu);
                try {
                    $notif = $this->soutenanceNotificationFactory->createNotificationBureauDesDoctoratsProposition($these);
                    if (empty($notif->getTo())) {
                        throw new RuntimeException(
                            "Aucune adresse mail trouvée pour les aspects Doctorat de l'établissement d'inscription '{$these->getEtablissement()}'");
                    }
                    $this->notifierService->trigger($notif);
                } catch (\Notification\Exception\RuntimeException $e) {
                    // aucun destinataire , todo : cas à gérer !
+0 −4
Changes for module/Soutenance/src/Soutenance/Service/Notification/SoutenanceNotificationFactory.php: 0 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -174,10 +174,6 @@ class SoutenanceNotificationFactory extends NotificationFactory
    {
        $emails = $this->emailTheseService->fetchEmailAspectsDoctorat($these);

        if (empty($emails)) {
            throw new RuntimeException("Aucune adresse mail trouvée pour la maison du doctorat de la thèse {$these->getId()}");
        }

        $vars = ['these' => $these, 'doctorant' => $these->getDoctorant(), 'etablissement' => $these->getEtablissement()];
        $url = $this->getUrlService()->setVariables($vars);
        $vars['Url'] = $url;
+12 −12
Changes for module/Soutenance/view/soutenance/proposition/partial/informations.phtml: 12 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@
 *
 * @var IndividuRole[] $ecoleResponsables
 * @var IndividuRole[] $uniteResponsables
 * @var IndividuRole[] $etablissementResponsables
 * @var string[] $emailsAspectDoctorats
 *
 * @var Acteur[] $directeurs
 */
@@ -76,7 +76,8 @@ $etablissement = $these->getEtablissement();
                                <?php echo $unite->getStructure()->getLibelle(); ?>
                                    <?php if (empty($uniteResponsables)) : ?>
                                        <div class="alert alert-danger">
                                            <span class="icon icon-attention"></span> Aucun reponsable de site
                                            <span class="icon icon-attention"></span>
                                            Aucun responsable d'UR trouvé associé à l'établissement d'inscription (site)
                                        </div>
                                    <?php else : ?>
                                        <ul>
@@ -98,7 +99,8 @@ $etablissement = $these->getEtablissement();
                                <?php echo $ecole->getStructure()->getLibelle(); ?>
                                <?php if (empty($ecoleResponsables)) : ?>
                                    <div class="alert alert-danger">
                                        <span class="icon icon-attention"></span> Aucun reponsable de site
                                        <span class="icon icon-attention"></span>
                                        Aucun responsable d'ED trouvé associé à l'établissement d'inscription (site)
                                    </div>
                                <?php else : ?>
                                    <ul>
@@ -114,25 +116,23 @@ $etablissement = $these->getEtablissement();
                        </dd>
                        <dt> Établissement </dt>
                        <dd>
                            <?php if (!$ecole) : ?>
                                <strong class="text-danger">Aucun établissement !</strong>
                            <?php else : ?>
                            <?php echo $etablissement->getStructure()->getLibelle(); ?>
                                <?php if (empty($etablissementResponsables)) : ?>
                            <?php if (empty($emailsAspectDoctorats)) : ?>
                                <div class="alert alert-danger">
                                        <span class="icon icon-attention"></span> Aucun reponsable de site
                                    <span class="icon icon-attention"></span>
                                    Aucun destinataire trouvé, une adresse générique doit être renseignée sur la fiche
                                    de l'établissement d'inscription '<?php echo $etablissement->getStructure()->getLibelle(); ?>'
                                    pour l'aspect "Doctorat".
                                </div>
                            <?php else : ?>
                                <ul>
                                        <?php foreach ($etablissementResponsables as $etablissementResponsable) : ?>
                                    <?php foreach ($emailsAspectDoctorats as $emailsAspectDoctorat) : ?>
                                        <li>
                                                <?php echo $etablissementResponsable->getIndividu()->getNomComplet(); ?>
                                                (<?php echo ($etablissementResponsable->getIndividu()->getEmailPro())?:"<span class='text-danger'>Adresse électronique manquante</span>"; ?>)
                                            <?php echo $emailsAspectDoctorat; ?>
                                        </li>
                                    <?php endforeach; ?>
                                </ul>
                            <?php endif; ?>
                            <?php endif; ?>
                        </dd>
                    </dl>
            </div>