Commit 6d801ad5 authored by Thomas Hamel's avatar Thomas Hamel Committed by Bertrand Gauthier
Browse files

Rapport activité : envoi d'une notification aux gestionnaires d'ED lorsque la...

Rapport activité : envoi d'une notification aux gestionnaires d'ED lorsque la direction d'ED a donné son avis.
parent add4102e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Journal des modifications
- Menu Formations : élargissement du nombre de rôles habilités à voir le menu.
- Page 'Mes formations' pour le doctorant : suppression de la colonne 'Etablissement'.
- Déplacement de la config des imports/synchros dans le module Import.
- Rapport activité : envoi d'une notification aux gestionnaires d'ED lorsque la direction d'ED a donné son avis.
- [FIX] Rapports d'activité : correction du plantage empêchant l'envoi de la notification en cas de validation/avis.
- [FIX] Correction de la config des imports api_import_inscription_administrative et api_import_inscription_administrative_apprenant.
- [FIX] Rapport CSI : rétablissement du bouton de suppression d'un rapport.
+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ namespace RapportActivite;
use Application\Form\Factory\RapportAvisFormFactory;
use Application\Form\Rapport\RapportAvisForm;
use Application\Navigation\ApplicationNavigationFactory;
use RapportActivite\Rule\Avis\Notification\RapportActiviteAvisNotificationRule;
use RapportActivite\Rule\Avis\Notification\RapportActiviteAvisNotificationRuleFactory;
use UnicaenSearch\Controller\SearchControllerPluginFactory;
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
use Doctrine\ORM\Mapping\Driver\XmlDriver;
@@ -733,6 +735,7 @@ return [
            RapportActiviteValidationEventListener::class => RapportActiviteValidationEventListenerFactory::class,

            OperationAttendueNotificationRule::class => OperationAttendueNotificationRuleFactory::class,
            RapportActiviteAvisNotificationRule::class => RapportActiviteAvisNotificationRuleFactory::class,
            RapportActiviteCreationRule::class => RapportActiviteCreationRuleFactory::class,
            RapportActiviteOperationRule::class => RapportActiviteOperationRuleFactory::class,

+26 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use Laminas\EventManager\EventManagerInterface;
use RapportActivite\Entity\Db\RapportActiviteAvis;
use RapportActivite\Event\Operation\RapportActiviteOperationAbstractEventListener;
use RapportActivite\Event\RapportActiviteEvent;
use RapportActivite\Rule\Avis\Notification\RapportActiviteAvisNotificationRuleAwareTrait;
use RapportActivite\Service\Avis\RapportActiviteAvisService;
use RapportActivite\Service\Operation\RapportActiviteOperationServiceAwareTrait;
use Webmozart\Assert\Assert;
@@ -18,7 +19,7 @@ use Webmozart\Assert\Assert;
class RapportActiviteAvisEventListener extends RapportActiviteOperationAbstractEventListener
{
    use RapportActiviteOperationServiceAwareTrait;

    use RapportActiviteAvisNotificationRuleAwareTrait;
    /**
     * @inheritDoc
     */
@@ -42,6 +43,7 @@ class RapportActiviteAvisEventListener extends RapportActiviteOperationAbstractE

        $this->handleSuppressionValidationDoctorant();
        $this->handleNotificationOperationAttendue();
        $this->handleNotificationAvisRespEDNotification();
    }

    public function onAvisModifie(RapportActiviteAvisEvent $event)
@@ -108,4 +110,27 @@ class RapportActiviteAvisEventListener extends RapportActiviteOperationAbstractE
        $this->event->setMessages($messages);
        $this->event->addMessages($event->getMessages());
    }


    /**
     * Notification des personnes concernées suite au dépot de l'avis du responsable de l'ED.
     */
    protected function handleNotificationAvisRespEDNotification(): void
    {
        $rapportActiviteAvis = $this->operationRealisee;
        if ($rapportActiviteAvis->getAvis()->getAvisType()->getCode()
            !== RapportActiviteAvis::AVIS_TYPE__CODE__AVIS_RAPPORT_ACTIVITE_DIR_ED) return;

        $this->rapportActiviteAvisNotificationRule
            ->setRapportActiviteAvis($this->operationRealisee)
            ->execute();
        $notif = $this->rapportActiviteNotificationFactory->createNotificationAvisAjoute($rapportActiviteAvis);
        $this->rapportActiviteAvisNotificationRule->configureNotification($notif);

        $result = $this->notifierService->trigger($notif);

        $messages['info'] = ($result->getSuccessMessages()[0] ?? null);
        $messages['warning'] = ($result->getErrorMessages()[0] ?? null);
        $this->event->setMessages(array_filter($messages));
    }
}
 No newline at end of file
+5 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace RapportActivite\Event\Avis;

use Notification\Service\NotifierService;
use Psr\Container\ContainerInterface;
use RapportActivite\Rule\Avis\Notification\RapportActiviteAvisNotificationRule;
use RapportActivite\Rule\Operation\Notification\OperationAttendueNotificationRule;
use RapportActivite\Rule\Operation\RapportActiviteOperationRule;
use RapportActivite\Service\Notification\RapportActiviteNotificationFactory;
@@ -35,6 +36,10 @@ class RapportActiviteAvisEventListenerFactory
        $rapportActiviteNotificationFactory = $container->get(RapportActiviteNotificationFactory::class);
        $listener->setRapportActiviteNotificationFactory($rapportActiviteNotificationFactory);

        /** @var RapportActiviteAvisNotificationRule $rapportActiviteAvisNotificationFactory */
        $rapportActiviteAvisNotificationFactory = $container->get(RapportActiviteAvisNotificationRule::class);
        $listener->setRapportActiviteAvisNotificationRule($rapportActiviteAvisNotificationFactory);

        /** @var \Notification\Service\NotifierService $notifierService */
        $notifierService = $container->get(NotifierService::class);
        $listener->setNotifierService($notifierService);
+4 −4
Original line number Diff line number Diff line
@@ -3,18 +3,18 @@
namespace RapportActivite\Notification;

use Notification\Notification;
use RapportActivite\Entity\Db\RapportActiviteAvis;
use RapportActivite\Entity\RapportActiviteOperationInterface;

class RapportActiviteAvisNotification extends Notification
{
    protected ?string $templatePath = 'rapport-activite/notification/avis';
    private RapportActiviteAvis $rapportActiviteAvis;
    private RapportActiviteOperationInterface $rapportActiviteAvis;
    private array $messagesByAvisValeurBool = [];

    /**
     * @param \RapportActivite\Entity\Db\RapportActiviteAvis $rapportActiviteAvis
     * @param RapportActiviteOperationInterface $rapportActiviteAvis
     */
    public function setRapportActiviteAvis(RapportActiviteAvis $rapportActiviteAvis): void
    public function setRapportActiviteAvis(RapportActiviteOperationInterface $rapportActiviteAvis): void
    {
        $this->rapportActiviteAvis = $rapportActiviteAvis;
    }
Loading