Commit 53a0f750 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

remise du if des campagne precendente

parent baf7e17a
Loading
Loading
Loading
Loading
+2 −4
Changes for config/autoload/unicaen-app.global.php: 2 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -34,8 +34,8 @@ return [
        'app_infos' => [
            'nom'     => "EMC2",
            'desc'    => "Emploi Mobilité Carrière Compétences",
            'version' => "3.2.2",
            'date'    => "23/05/2023",
            'version' => "3.2.3",
            'date'    => "26/05/2023",

//            'liens' => [
//                'COMUE' => [
@@ -45,8 +45,6 @@ return [
//            ],
        ],



        /**
         * Période d'exécution de la requête de rafraîchissement de la session utilisateur, en millisecondes.
         */
+47 −0
Changes for module/EntretienProfessionnel/config/merged/campagne.config.php: 47 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -61,6 +61,17 @@ return [
                        CampagnePrivileges::CAMPAGNE_MODIFIER,
                    ],
                ],
                [
                    'controller' => CampagneController::class,
                    'action' => [
                        'demander-validation-agent',
                        'demander-validation-superieur',
                        'demander-validation-autorite',
                    ],
                    'privileges' => [
                        CampagnePrivileges::CAMPAGNE_MODIFIER,
                    ],
                ],
                [
                    'controller' => CampagneController::class,
                    'action' => [
@@ -160,6 +171,42 @@ return [
                                    ],
                                ],
                            ],
                            'demander-validation-agent' => [
                                'type'  => Segment::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route'    => '/demander-validation-agent/:campagne',
                                    'defaults' => [
                                        /** @see CampagneController::demanderValidationAgentAction() */
                                        'controller' => CampagneController::class,
                                        'action'     => 'demander-validation-agent',
                                    ],
                                ],
                            ],
                            'demander-validation-superieur' => [
                                'type'  => Segment::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route'    => '/demander-validation-superieur/:campagne',
                                    'defaults' => [
                                        /** @see CampagneController::demanderValidationSuperieurAction() */
                                        'controller' => CampagneController::class,
                                        'action'     => 'demander-validation-superieur',
                                    ],
                                ],
                            ],
                            'demander-validation-autorite' => [
                                'type'  => Segment::class,
                                'may_terminate' => true,
                                'options' => [
                                    'route'    => '/demander-validation-autorite/:campagne',
                                    'defaults' => [
                                        /** @see CampagneController::demanderValidationAutoriteAction() */
                                        'controller' => CampagneController::class,
                                        'action'     => 'demander-validation-autorite',
                                    ],
                                ],
                            ],
                            'historiser' => [
                                'type'  => Segment::class,
                                'may_terminate' => true,
+78 −0
Changes for module/EntretienProfessionnel/src/EntretienProfessionnel/Controller/CampagneController.php: 78 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace EntretienProfessionnel\Controller;

use Application\Entity\Db\Agent;
use Application\Entity\Db\AgentAutorite;
use Application\Service\Agent\AgentServiceAwareTrait;
use DateInterval;
use DateTime;
@@ -170,6 +171,83 @@ class CampagneController extends AbstractActionController {
        return $vm;
    }

    /** Action de la page d'affichage d'une campagne ******************************************************************/

    public function demanderValidationAutoriteAction() : ViewModel
    {
        $campagne = $this->getCampagneService()->getRequestedCampagne($this);
        $enAttente =  $this->getCampagneService()->getEntretiensEnAttenteAutorite($campagne);

        $entretiens = []; $problemes = []; $listes = [];
        foreach ($enAttente as $entretien) {
            $agent = $entretien->getAgent();
            $autorites = array_map(function (AgentAutorite $aa) { return $aa->getAutorite(); }, $agent->getAutorites());
            $autorites = array_diff($autorites, [$entretien->getResponsable()]);

            if (!empty($autorites)) {
                foreach ($autorites as $autorite) {
                    $listes[$autorite->getId()] = $autorite;
                    $entretiens[$autorite->getId()][] = $entretien;
                }
            } else {
                $problemes[] = $entretien;
            }
        }

        $count = 0;
        $texte  = "Liste des notifications :";
        $texte .= "<ul>";
        foreach ($listes as $autorite) {
            $agent = $entretien->getAgent();
            $mail = $this->getNotificationService()->triggerRappelValidationAutorite($autorite, $entretiens[$autorite->getId()]);
            $texte .= "<li> Notification faite vers ".$agent->getDenomination(). " (".$agent->getEmail().") mail#".$mail->getId(). "</li>";
            $count++;
        }
        $texte .= "</ul>";
        $texte .= $count . " notification·s <br/>";

        $texte .= "Liste des problèmes : ";
        $texte .= "<ul>";
        foreach ($problemes as $probleme) {

        }
        $texte .= "</ul>";

        $vm = new ViewModel([
            'title' => "Rapport de notification",
            'reponse' => $texte,
        ]);
        $vm->setTemplate('default/reponse');
        return $vm;
    }

    public function demanderValidationAgentAction() : ViewModel
    {
        $campagne = $this->getCampagneService()->getRequestedCampagne($this);
        $enAttente =  $this->getCampagneService()->getEntretiensEnAttenteAgent($campagne);

        $count = 0;
        $texte  = "Liste des notifications :";
        $texte .= "<ul>";
        foreach ($enAttente as $entretien) {
            $agent = $entretien->getAgent();
            $mail = $this->getNotificationService()->triggerRappelValidationAgent($entretien);
            $texte .= "<li> Notification faite vers ".$agent->getDenomination(). " (".$agent->getEmail().") mail#".$mail->getId(). "</li>";
            $count++;
        }
        $texte .= "</ul>";
        $texte .= $count . " notification·s";

        $vm = new ViewModel([
            'title' => "Rapport de notification",
            'reponse' => $texte,
        ]);
        $vm->setTemplate('default/reponse');
        return $vm;
    }

    /** Page associée à la campagne dans l'écran des structures *******************************************************/

    /**
     * Action affichant une campagne d'entretien professionnel pour une structure
     * Attention : les agents doivent être complétement hydratés sinon les calculs d'affectations, de grades et d'obligation seront erronés
+4 −0
Changes for module/EntretienProfessionnel/src/EntretienProfessionnel/Provider/Template/MailTemplates.php: 4 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -21,4 +21,8 @@ class MailTemplates {
    const RAPPEL_CAMPAGNE_AVANCEMENT_SUPERIEUR = 'NOTIFICATION_RAPPEL_CAMPAGNE_SUPERIEUR';
    const RAPPEL_ENTRETIEN_AGENT = 'NOTIFICATION_RAPPEL_ENTRETIEN';

    const RAPPEL_ATTENTE_VALIDATION_SUPERIEUR = 'NOTIFICATION_RAPPEL_ATTENTE_VALIDATION_SUPERIEUR';
    const RAPPEL_ATTENTE_VALIDATION_AUTORITE  = 'NOTIFICATION_RAPPEL_ATTENTE_VALIDATION_AUTORITE';
    const RAPPEL_ATTENTE_VALIDATION_AGENT     = 'NOTIFICATION_RAPPEL_ATTENTE_VALIDATION_AGENT';

}
 No newline at end of file
+34 −0
Changes for module/EntretienProfessionnel/src/EntretienProfessionnel/Service/Notification/NotificationService.php: 34 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -283,4 +283,38 @@ class NotificationService {
        return $mail;
    }

    /** Notifications associées à la demande de validation (en retard) d'entretiens profesionnels *****/

    public function triggerRappelValidationSuperieur(?EntretienProfessionnel $entretien) : Mail
    {
        $vars = ['campagne' => $entretien->getCampagne(), 'entretien' => $entretien, 'agent' => $entretien->getAgent(), 'UrlService' => $this->getUrlService()];
        $rendu = $this->getRenduService()->generateRenduByTemplateCode(MailTemplates::RAPPEL_ATTENTE_VALIDATION_SUPERIEUR, $vars);
        $mail = $this->getMailService()->sendMail($this->getEmailAgent($entretien), $rendu->getSujet(), $rendu->getCorps());
        $mail->setMotsClefs([$entretien->generateTag(), $rendu->getTemplate()->generateTag()]);
        $this->getMailService()->update($mail);

        return $mail;
    }

    public function triggerRappelValidationAutorite(?EntretienProfessionnel $entretien) : Mail
    {
        $vars = ['campagne' => $entretien->getCampagne(), 'entretien' => $entretien, 'agent' => $entretien->getAgent(), 'UrlService' => $this->getUrlService()];
        $rendu = $this->getRenduService()->generateRenduByTemplateCode(MailTemplates::RAPPEL_ATTENTE_VALIDATION_AUTORITE, $vars);
        $mail = $this->getMailService()->sendMail($this->getEmailAgent($entretien), $rendu->getSujet(), $rendu->getCorps());
        $mail->setMotsClefs([$entretien->generateTag(), $rendu->getTemplate()->generateTag()]);
        $this->getMailService()->update($mail);

        return $mail;
    }

    public function triggerRappelValidationAgent(?EntretienProfessionnel $entretien) : Mail
    {
        $vars = ['campagne' => $entretien->getCampagne(), 'entretien' => $entretien, 'agent' => $entretien->getAgent(), 'UrlService' => $this->getUrlService()];
        $rendu = $this->getRenduService()->generateRenduByTemplateCode(MailTemplates::RAPPEL_ATTENTE_VALIDATION_AGENT, $vars);
        $mail = $this->getMailService()->sendMail($this->getEmailAgent($entretien), $rendu->getSujet(), $rendu->getCorps());
        $mail->setMotsClefs([$entretien->generateTag(), $rendu->getTemplate()->generateTag()]);
        $this->getMailService()->update($mail);

        return $mail;
    }
}
 No newline at end of file
Loading