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

Merge branch 'hotfix_signature_incorrecte'

parents e73d747a b5eee09f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -133,10 +133,11 @@ class IdentityProvider implements ProviderInterface, ChainableProvider
        $acteursDirecteurThese = $this->acteurService->filterActeursDirecteurThese($acteurs);
        $acteursCoDirecteurThese = $this->acteurService->filterActeursCoDirecteurThese($acteurs);
        $acteursPresidentJury = $this->acteurService->filterActeursPresidentJury($acteurs);
        $acteursRapporteurJury = $this->acteurService->filterActeursRapporteurJury($acteurs);

        return array_map(
            function(Acteur $a) { return $a->getRole(); },
            array_merge($acteursDirecteurThese, $acteursCoDirecteurThese, $acteursPresidentJury)
            array_merge($acteursDirecteurThese, $acteursCoDirecteurThese, $acteursPresidentJury, $acteursRapporteurJury)
        );
    }

+11 −0
Original line number Diff line number Diff line
@@ -68,6 +68,17 @@ class ActeurService extends BaseService
        });
    }

    /**
     * @param Acteur[] $acteurs
     * @return Acteur[]
     */
    public function filterActeursRapporteurJury(array $acteurs): array
    {
        return array_filter($acteurs, function(Acteur $a) {
            return $a->getRole()->getCode() === Role::CODE_RAPPORTEUR_JURY;
        });
    }

    /**
     * @param Acteur[] $acteurs
     * @return Acteur[]
+8 −2
Original line number Diff line number Diff line
@@ -229,10 +229,16 @@ class StructureDocumentService {
        return $contenus;
    }

    public function getContenu(Structure $structure, string $nature_code) {
    /**
     * @param Structure $structure
     * @param string $nature_code
     * @param Etablissement|null $etablissement
     * @return string|null
     */
    public function getContenu(Structure $structure, string $nature_code, ?Etablissement $etablissement = null) {
        $documents = $this->getStructuresDocumentsByStructure($structure);
        foreach ($documents as $document) {
            if ($document->getNature()->getCode() === $nature_code) return $this->fichierService->fetchContenuFichier($document->getFichier());
            if ($document->getNature()->getCode() === $nature_code AND $document->getEtablissement() === $etablissement) return $this->fichierService->fetchContenuFichier($document->getFichier());
        }
        return null;
    }
+3 −34
Original line number Diff line number Diff line
@@ -8,22 +8,17 @@ use Application\Entity\Db\Etablissement;
use Application\Entity\Db\NatureFichier;
use Application\Entity\Db\Profil;
use Application\Entity\Db\TypeValidation;
use Application\Entity\Db\Utilisateur;
use Application\Entity\Db\Validation;
use Application\Service\Acteur\ActeurServiceAwareTrait;
use Application\Service\Fichier\FichierServiceAwareTrait;
use Application\Service\FichierThese\PdcData;
use Application\Service\Individu\IndividuServiceAwareTrait;
use Application\Service\Role\RoleServiceAwareTrait;
use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait;
use Application\Service\These\TheseServiceAwareTrait;
use Application\Service\Utilisateur\UtilisateurServiceAwareTrait;
use DateInterval;
use Soutenance\Entity\Avis;
use Soutenance\Entity\Etat;
use Soutenance\Entity\Membre;
use Soutenance\Form\AdresseSoutenance\AdresseSoutenanceFormAwareTrait;
use Soutenance\Form\DateRenduRapport\DateRenduRapportForm;
use Soutenance\Form\DateRenduRapport\DateRenduRapportFormAwareTrait;
use Soutenance\Service\Avis\AvisServiceAwareTrait;
use Soutenance\Service\EngagementImpartialite\EngagementImpartialiteServiceAwareTrait;
@@ -38,7 +33,6 @@ use Soutenance\Service\Validation\ValidatationServiceAwareTrait;
use UnicaenApp\Exception\LogicException;
use UnicaenApp\Exception\RuntimeException;
use UnicaenAuth\Service\Traits\UserServiceAwareTrait;
use Zend\Http\Request;
use Zend\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Zend\View\Model\ViewModel;
use Zend\View\Renderer\PhpRenderer;
@@ -116,12 +110,10 @@ class PresoutenanceController extends AbstractController
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);

        /** @var DateRenduRapportForm $form */
        $form = $this->getDateRenduRapportForm();
        $form->setAttribute('action', $this->url()->fromRoute('soutenance/presoutenance/date-rendu-rapport', ['these' => $these->getId()], [], true));
        $form->bind($proposition);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
@@ -198,7 +190,6 @@ class PresoutenanceController extends AbstractController
            if ($libre) $acteurs_libres[] = $acteur;
        }

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
@@ -212,8 +203,6 @@ class PresoutenanceController extends AbstractController
            //mise à jour du membre de soutenance
            $membre->setActeur($acteur);
            $this->getMembreService()->update($membre);
            //affectation du rôle
            $this->getRoleService()->addIndividuRole($individu, $acteur->getRole());
            //creation de l'utilisateur
            $utilisateurs = $this->utilisateurService->getRepository()->findByIndividu($individu);
            if (empty($utilisateurs)) {
@@ -238,7 +227,6 @@ class PresoutenanceController extends AbstractController
        $these = $this->requestedThese();
        $membre = $this->getMembreService()->getRequestedMembre($this);

        /** @var Acteur[] $acteurs */
        $acteurs = $this->getActeurService()->getRepository()->findActeurByThese($these);
        $acteur = null;
        foreach ($acteurs as $acteur_) {
@@ -250,15 +238,12 @@ class PresoutenanceController extends AbstractController
        $username = $this->generateUsername($membre);
        $membre->setActeur(null);
        $this->getMembreService()->update($membre);
        $this->getRoleService()->removeIndividuRole($acteur->getIndividu(), $acteur->getRole());


        $validations = $this->getValidationService()->getRepository()->findValidationByTheseAndCodeAndIndividu($these, TypeValidation::CODE_ENGAGEMENT_IMPARTIALITE, $acteur->getIndividu());
        if (!empty($validations)) {
            $this->getValidationService()->unsignEngagementImpartialite(current($validations));
        }

        /** @var Utilisateur $utilisateur */
        $utilisateur = $this->utilisateurService->getRepository()->findByUsername($username);
        if ($utilisateur) $this->utilisateurService->supprimerUtilisateur($utilisateur);

@@ -283,7 +268,6 @@ class PresoutenanceController extends AbstractController
            $rapporteurs = $this->getPropositionService()->getRapporteurs($proposition);
        }

        /** @var Membre $rapporteur */
        foreach ($rapporteurs as $rapporteur) {
            $this->getNotifierSoutenanceService()->triggerDemandeAvisSoutenance($these, $proposition, $rapporteur);
        }
@@ -310,7 +294,6 @@ class PresoutenanceController extends AbstractController
        $proposition->setEtat($etat);
        $this->getPropositionService()->update($proposition);

        /** @var Avis[] $avis */
        $avis = $this->getAvisService()->getAvisByThese($these);

        $this->getNotifierSoutenanceService()->triggerFeuVertSoutenance($these, $proposition, $avis);
@@ -347,7 +330,6 @@ class PresoutenanceController extends AbstractController
        $form->setAttribute('action', $this->url()->fromRoute('soutenance/presoutenance/modifier-adresse', ['these' => $these->getId()], [], true));
        $form->bind($proposition);

        /** @var Request $request */
        $request = $this->getRequest();
        if ($request->isPost()) {
            $data = $request->getPost();
@@ -371,7 +353,6 @@ class PresoutenanceController extends AbstractController
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);

        /** @var PdcData $pdcData */
        $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);

        $exporter = new ProcesVerbalSoutenancePdfExporter($this->renderer, 'A4');
@@ -390,7 +371,6 @@ class PresoutenanceController extends AbstractController
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);

        /** @var PdcData $pdcData */
        $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);

        $exporter = new AvisSoutenancePdfExporter($this->renderer, 'A4');
@@ -433,17 +413,14 @@ class PresoutenanceController extends AbstractController
    {
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);
        $signature = $this->getStructureDocumentService()->getContenu($these->getEcoleDoctorale()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION);
        $signature = $this->getStructureDocumentService()->getContenu($these->getEcoleDoctorale()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION, $these->getEtablissement());
        if ($signature === null) $signature = $this->getStructureDocumentService()->getContenu($these->getEtablissement()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION);

        /** @var PdcData $pdcData */
        $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);

        /** @var Validation[] $validationMDD */
        $validationMDD = $this->getValidationService()->getRepository()->findValidationByCodeAndThese(TypeValidation::CODE_VALIDATION_PROPOSITION_BDD, $these);
        $dateValidation = (!empty($validationMDD)) ? current($validationMDD)->getHistoModification() : null;

        /** @var string $ville */
        $ville = $this->getVille($these->getEtablissement());

        $exporter = new ConvocationPdfExporter($this->renderer, 'A4');
@@ -463,17 +440,14 @@ class PresoutenanceController extends AbstractController
    {
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);
        $signature = $this->getStructureDocumentService()->getContenu($these->getEcoleDoctorale()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION);
        $signature = $this->getStructureDocumentService()->getContenu($these->getEcoleDoctorale()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION, $these->getEtablissement());
        if ($signature === null) $signature = $this->getStructureDocumentService()->getContenu($these->getEtablissement()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION);

        /** @var PdcData $pdcData */
        $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);

        /** @var Validation[] $validationMDD */
        $validationMDD = $this->getValidationService()->getRepository()->findValidationByCodeAndThese(TypeValidation::CODE_VALIDATION_PROPOSITION_BDD, $these);
        $dateValidation = (!empty($validationMDD)) ? current($validationMDD)->getHistoModification() : null;

        /** @var string $ville */
        $ville = $this->getVille($these->getEtablissement());

        $exporter = new ConvocationPdfExporter($this->renderer, 'A4');
@@ -494,18 +468,14 @@ class PresoutenanceController extends AbstractController
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);
        $membre = $this->getMembreService()->getRequestedMembre($this);
        $signature = $this->getStructureDocumentService()->getContenu($these->getEcoleDoctorale()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION);
        $signature = $this->getStructureDocumentService()->getContenu($these->getEcoleDoctorale()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION, $these->getEtablissement());
        if ($signature === null) $signature = $this->getStructureDocumentService()->getContenu($these->getEtablissement()->getStructure(), NatureFichier::CODE_SIGNATURE_CONVOCATION);

        /** @var PdcData $pdcData */
        $pdcData = $this->getTheseService()->fetchInformationsPageDeCouverture($these);


        /** @var Validation[] $validationMDD */
        $validationMDD = $this->getValidationService()->getRepository()->findValidationByCodeAndThese(TypeValidation::CODE_VALIDATION_PROPOSITION_BDD, $these);
        $dateValidation = (!empty($validationMDD)) ? current($validationMDD)->getHistoModification() : null;

        /** @var string $ville */
        $ville = $this->getVille($these->getEtablissement());

        $exporter = new ConvocationPdfExporter($this->renderer, 'A4');
@@ -527,7 +497,6 @@ class PresoutenanceController extends AbstractController
        $these = $this->requestedThese();
        $proposition = $this->getPropositionService()->findByThese($these);

        /** @var Validation[] $validationMDD */
        $validationMDD = $this->getValidationService()->getRepository()->findValidationByCodeAndThese(TypeValidation::CODE_VALIDATION_PROPOSITION_BDD, $these);
        $dateValidation = (!empty($validationMDD)) ? current($validationMDD)->getHistoModification() : null;

+1 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@

namespace Soutenance\Service\EngagementImpartialite;

use Application\Entity\Db\Acteur;
use Application\Entity\Db\Individu;
use Application\Entity\Db\These;
use Application\Entity\Db\TypeValidation;