Commit 0e914970 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Soutenance : la révocation d'un avis de soutenance est impossible dès...

[FIX] Soutenance : la révocation d'un avis de soutenance est impossible dès lors que le dossier de soutenance est passé à l'état 'Dossier complet'.
parent 2a962fd5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ Journal des modifications
- [FIX] Soutenance : la création de plusieurs adresses de soutenance doit être empêchée (màj BDD requise).
- [FIX] Module HDR : désactivation du comptage des rapporteurs de rang B sans HDR (les gestionnaires vérifieront manuellement).
- [FIX] Le rôle Observateur Structure étais éjecté des pages Soutenances (thèses et HDR).
- [FIX] Soutenance : la révocation d'un avis de soutenance est impossible dès lors que le dossier de soutenance est passé à l'état 'Dossier complet'.

10.2.1
------
+7 −8
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ use HDR\Entity\Db\HDR;
use Laminas\Permissions\Acl\Assertion\AssertionInterface;
use Laminas\Permissions\Acl\Resource\ResourceInterface;
use Soutenance\Entity\Avis;
use Soutenance\Entity\Etat;
use Soutenance\Entity\Membre;
use Soutenance\Entity\Proposition;
use Soutenance\Entity\PropositionThese;
@@ -82,7 +83,6 @@ class AvisSoutenanceAssertion extends AbstractAssertion implements AssertionInt
     */
    protected function assertEntity(ResourceInterface $entity, $privilege = null): bool
    {

        if (! parent::assertEntity($entity, $privilege)) {
            return false;
        }
@@ -93,6 +93,7 @@ class AvisSoutenanceAssertion extends AbstractAssertion implements AssertionInt
         */
        $rapporteur = $entity;
        $object = $rapporteur instanceof ActeurThese ? $rapporteur->getThese() : $rapporteur->getHDR();
        $proposition = $this->propositionService->findOneForObject($object);

        if($object instanceof These){
            if(!$this->userContextService->isStructureDuRoleRespecteeForThese($object)) return false;
@@ -120,19 +121,17 @@ class AvisSoutenanceAssertion extends AbstractAssertion implements AssertionInt
                    throw new RuntimeException("Problème de récupération de la date");
                }

                /** @var Proposition $proposition */
                $proposition = $this->getPropositionService()->findOneForObject($object);
                $dateRetour = ($proposition->getRenduRapport())->add(new DateInterval('P1D'));
                if ($currentDate > $dateRetour) return false;
            /**
             * Les personnes pouvant révoquer un avis
             * - le rapporteur
             * - le bdd de l'etablissement
             */

            case AvisSoutenancePrivileges::AVIS_ANNULER :
                if ($proposition->getEtat()->getCode() === Etat::COMPLET) {
                    return false;
                }
                $etatObject = $object instanceof These ? $object->getEtatThese() : $object->getEtatHDR();
                if($etatObject === These::ETAT_SOUTENUE || $etatObject === HDR::ETAT_SOUTENUE) return false;
        }

        return true;
    }