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

Modification mail vers rapporteurs

parent a0fbe5c8
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ Journal des modifications
----- 
- Nouveau critère de bloquage des soutenances basé sur la validité des rapporteurs.
- Retrait de la mention qualité absente sur le justificatif de co-encadrement 
- Ajustement de la date/heure de rendu des rapports 
- Modification du lien dans les mails vers les rapporteurs (description complète : token, role, redirect)

3.0.6
-----
+1 −1
Original line number Diff line number Diff line
@@ -121,7 +121,7 @@ use Application\View\Renderer\PhpRenderer;

<p>
    Ce document certifie que <?php echo $coencadrant->getIndividu()->getPrenom1(); ?> <?php echo $coencadrant->getIndividu()->getNomUsuel(); ?>,
    actuellement <?php echo ($coencadrant->getQualite() !== " ")?$coencadrant->getQualite():"<span style='color:darkred;'>qualité manquante</span>"; ?> à
    actuellement <?php echo ($coencadrant->getQualite() !== " ")?$coencadrant->getQualite():""; ?> à
    <?php echo ($coencadrant->getEtablissement())?$coencadrant->getEtablissement()->getLibelle():"<span style='color:darkred;'>établissement manquant</span>"; ?>,
    a assuré la fonction de co-encadrant sur pour les thèses suivantes :
</p>
+33 −2
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ use Soutenance\Service\Evenement\EvenementServiceAwareTrait;
use Soutenance\Service\Membre\MembreServiceAwareTrait;
use Soutenance\Service\Notifier\NotifierSoutenanceServiceAwareTrait;
use Soutenance\Service\Proposition\PropositionServiceAwareTrait;
use UnicaenAuthToken\Service\TokenServiceAwareTrait;
use Zend\View\Model\ViewModel;

/**
@@ -27,6 +28,7 @@ class EngagementImpartialiteController extends AbstractController
    use MembreServiceAwareTrait;
    use NotifierSoutenanceServiceAwareTrait;
    use PropositionServiceAwareTrait;
    use TokenServiceAwareTrait;

    public function engagementImpartialiteAction()
    {
@@ -58,8 +60,24 @@ class EngagementImpartialiteController extends AbstractController
        /** @var Membre $membre */
        foreach ($proposition->getMembres() as $membre) {
            if ($membre->getActeur() and $membre->estRapporteur()) {

                $validation = $this->getEngagementImpartialiteService()->getEngagementImpartialiteByMembre($these, $membre);
                if (!$validation) $this->getNotifierSoutenanceService()->triggerDemandeSignatureEngagementImpartialite($these, $proposition, $membre);
                if (!$validation) {
                    $utilisateurs = $membre->getActeur()->getIndividu()->getUtilisateurs();
                    $token = null;
                    foreach ($utilisateurs as $utilisateur) {
                        $token = $this->tokenService->findUserTokenByUserId($utilisateur->getId());
                        if (! $token->isExpired()) break;
                    }

                    if ($token !== null) {
                        $url_rapporteur = $this->url()->fromRoute("soutenance/index-rapporteur", ['these' => $these->getId()], ['force_canonical' => true], true);
                        $url = $this->url()->fromRoute('zfcuser/login', ['type' => 'token'], ['query' => ['token' => $token->getToken(), 'redirect' => $url_rapporteur, 'role' => $membre->getActeur()->getRole()->getRoleId()], 'force_canonical' => true], true);
                    } else {
                        $url = $this->url()->fromRoute("soutenance/index-rapporteur", ['these' => $these->getId()], ['force_canonical' => true], true);
                    }
                    $this->getNotifierSoutenanceService()->triggerDemandeSignatureEngagementImpartialite($these, $proposition, $membre, $url);
                }
            }
        }

@@ -74,7 +92,20 @@ class EngagementImpartialiteController extends AbstractController
        $membre = $this->getMembreService()->getRequestedMembre($this);

        if ($membre->getActeur()) {
            $this->getNotifierSoutenanceService()->triggerDemandeSignatureEngagementImpartialite($these, $proposition, $membre);
            $utilisateurs = $membre->getActeur()->getIndividu()->getUtilisateurs();
            $token = null;
            foreach ($utilisateurs as $utilisateur) {
                $token = $this->tokenService->findUserTokenByUserId($utilisateur->getId());
                if (! $token->isExpired()) break;
            }

            if ($token !== null) {
                $url_rapporteur = $this->url()->fromRoute("soutenance/index-rapporteur", ['these' => $these->getId()], ['force_canonical' => true], true);
                $url = $this->url()->fromRoute('zfcuser/login', ['type' => 'token'], ['query' => ['token' => $token->getToken(), 'redirect' => $url_rapporteur, 'role' => $membre->getActeur()->getRole()->getRoleId()], 'force_canonical' => true], true);
            } else {
                $url = $this->url()->fromRoute("soutenance/index-rapporteur", ['these' => $these->getId()], ['force_canonical' => true], true);
            }
            $this->getNotifierSoutenanceService()->triggerDemandeSignatureEngagementImpartialite($these, $proposition, $membre, $url);
        }

        $this->redirect()->toRoute('soutenance/presoutenance', ['these' => $these->getId()], [], true);
+5 −0
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ use Soutenance\Service\Evenement\EvenementService;
use Soutenance\Service\Membre\MembreService;
use Soutenance\Service\Notifier\NotifierSoutenanceService;
use Soutenance\Service\Proposition\PropositionService;
use UnicaenAuthToken\Service\TokenService;
use UnicaenAuthToken\Service\TokenServiceAwareTrait;

class EngagementImpartialiteControllerFactory
{
@@ -25,6 +27,7 @@ class EngagementImpartialiteControllerFactory
         * @var MembreService $membreService
         * @var NotifierSoutenanceService $notifierService
         * @var EngagementImpartialiteService $engagementImpartialiteService
         * @var TokenService $tokenService
         */
        $acteurService                  = $container->get(ActeurService::class);
        $evenementService               = $container->get(EvenementService::class);
@@ -32,6 +35,7 @@ class EngagementImpartialiteControllerFactory
        $membreService                  = $container->get(MembreService::class);
        $notifierService                = $container->get(NotifierSoutenanceService::class);
        $engagementImpartialiteService  = $container->get(EngagementImpartialiteService::class);
        $tokenService                   = $container->get(TokenService::class);

        /** @var EngagementImpartialiteController $controller */
        $controller = new EngagementImpartialiteController();
@@ -41,6 +45,7 @@ class EngagementImpartialiteControllerFactory
        $controller->setMembreService($membreService);
        $controller->setNotifierSoutenanceService($notifierService);
        $controller->setEngagementImpartialiteService($engagementImpartialiteService);
        $controller->setTokenService($tokenService);

        return $controller;
    }
+17 −7
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ class PresoutenanceController extends AbstractController
        $this->renderer = $renderer;
    }

    public function presoutenanceAction()
    public function presoutenanceAction() : ViewModel
    {
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);
@@ -121,7 +121,7 @@ class PresoutenanceController extends AbstractController
        ]);
    }

    public function dateRenduRapportAction()
    public function dateRenduRapportAction() : ViewModel
    {
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);
@@ -244,10 +244,6 @@ class PresoutenanceController extends AbstractController
            $this->getNotifierSoutenanceService()->triggerConnexionRapporteur($proposition, $user, $url);
        }


//                $url = $this->url()->fromRoute('utilisateur/init-compte', ['token' => $user->getPasswordResetToken()], ['force_canonical' => true], true);
//                $this->getNotifierSoutenanceService()->triggerInitialisationCompte($these, $user, $url);

        return new ViewModel([
            'title' => "Association de " . $membre->getDenomination() . " à un acteur " . $this->appInfos()->getNom(),
            'acteurs' => $acteurs_libres,
@@ -303,7 +299,21 @@ class PresoutenanceController extends AbstractController
        }

        foreach ($rapporteurs as $rapporteur) {
            $this->getNotifierSoutenanceService()->triggerDemandeAvisSoutenance($these, $proposition, $rapporteur);
            $utilisateurs = $rapporteur->getActeur()->getIndividu()->getUtilisateurs();
            $token = null;
            foreach ($utilisateurs as $utilisateur) {
                $token = $this->tokenService->findUserTokenByUserId($utilisateur->getId());
                if (! $token->isExpired()) break;
            }

            if ($token !== null) {
                $url_rapporteur = $this->url()->fromRoute("soutenance/index-rapporteur", ['these' => $these->getId()], ['force_canonical' => true], true);
                $url = $this->url()->fromRoute('zfcuser/login', ['type' => 'token'], ['query' => ['token' => $token->getToken(), 'redirect' => $url_rapporteur, 'role' => $rapporteur->getActeur()->getRole()->getRoleId()], 'force_canonical' => true], true);
            } else {
                $url = $this->url()->fromRoute("soutenance/index-rapporteur", ['these' => $these->getId()], ['force_canonical' => true], true);
            }

            $this->getNotifierSoutenanceService()->triggerDemandeAvisSoutenance($these, $proposition, $rapporteur, $url);
        }

        $this->getEvenementService()->ajouterEvenement($proposition, Evenement::EVENEMENT_PRERAPPORT);
Loading