Commit 1c8c9f54 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

[FIX] Suppression à tort des attestations du 1er dépôt à la place de celles du 2nd dépôt.

parent b3b0cc4d
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ Journal des modifications
5.1.1
-----
- [FIX] Corrections suite à l'intégration du nouveau module Fichier.
- [FIX] Suppression à tort des "attestations" du 1er dépôt à la place de celles du 2nd dépôt.
- [FIX] Suppression physique de l'ancien fichier lors du changement de logo d'une structure.
- [FIX] Correction et amélioration du calcul du nom de fichier du logo (existant ou nouveau) d'une structure.
- Template de pagination : abandon du module/Application/view/paginator.phtml et généralisation du module/Application/view/application/paginator.phtml
+6 −26
Changes for module/Application/src/Application/Rule/SuppressionAttestationsRequiseRule.php: 6 added lines, 26 removed lines.
Original line number Diff line number Diff line
@@ -16,44 +16,24 @@ use UnicaenApp\Exception\LogicException;
 */
class SuppressionAttestationsRequiseRule implements RuleInterface
{
    /**
     * @var These
     */
    private $these;

    /**
     * @var VersionFichier
     */
    private $versionFichier;
    private These $these;
    private VersionFichier $versionFichier;

    /**
     * SuppressionAttestationsRequiseRule constructor.
     *
     * @param These          $these
     * @param VersionFichier $versionFichier
     */
    public function __construct(These $these, VersionFichier $versionFichier)
    {
        $this->these = $these;
        $this->versionFichier = $versionFichier;
    }

    /**
     * @return self
     */
    public function execute()
    public function execute(): bool
    {
        // rien n'est fait ici

        return $this;
        return $this->computeSuppressionAttestationEstRequise();
    }

    /**
     * Retourne un booléen indiquant si la remise d'un exemplaire papier est requise.
     *
     * @return bool
     * Calcule s'il est nécessaire de supprimer les réponses aux "attestations".
     */
    public function computeEstRequise(): bool
    private function computeSuppressionAttestationEstRequise(): bool
    {
        $attestation = $this->these->getAttestationForVersion($this->versionFichier);

+9 −9
Changes for module/Application/src/Application/Service/These/TheseService.php: 9 added lines, 9 removed lines.
Original line number Diff line number Diff line
@@ -275,11 +275,11 @@ class TheseService extends BaseService implements ListenerAggregateInterface
        }

        $these->removeAttestation($attestation);
        $this->entityManager->remove($attestation);

        try {
            $this->entityManager->remove($attestation);
            $this->entityManager->flush($attestation);
        } catch (OptimisticLockException $e) {
        } catch (ORMException $e) {
            throw new RuntimeException("Erreur rencontrée lors de la suppression", null, $e);
        }
    }
@@ -306,7 +306,7 @@ class TheseService extends BaseService implements ListenerAggregateInterface
        $diffusionCorr = clone $diffusionOrig;
        $diffusionCorr->setVersionCorrigee(true);
        $diffusionCorr->setCreationAuto(true);
        $this->updateDiffusion($these, $diffusionCorr, $versionOrig);
        $this->updateDiffusion($these, $diffusionCorr, $versionCorr);
    }

    /**
@@ -322,8 +322,7 @@ class TheseService extends BaseService implements ListenerAggregateInterface
            // on teste si la réponse à l'autorisation de diffusion existante a changé de manière "importante"
            // (auquel cas, il sera nécessaire de tester s'il faut supprimer ou pas les attestations)
            $rule = new AutorisationDiffusionRule();
            $rule->setDiffusion($diffusion);
            $rule->execute();
            $rule->setDiffusion($diffusion)->execute();
            $suppressionAttestationsAVerifier = $rule->computeChangementDeReponseImportant($this->entityManager);
        } else {
            $suppressionAttestationsAVerifier = false;
@@ -332,13 +331,14 @@ class TheseService extends BaseService implements ListenerAggregateInterface
        if (! $isUpdate) {
            $diffusion->setThese($these);
            $these->addDiffusion($diffusion);

            $this->entityManager->persist($diffusion);
        }

        try {
            if (! $isUpdate) {
                $this->entityManager->persist($diffusion);
            }
            $this->entityManager->flush($diffusion);
        } catch (OptimisticLockException $e) {
        } catch (ORMException $e) {
            throw new RuntimeException("Erreur rencontrée lors de l'enregistrement", null, $e);
        }

@@ -348,7 +348,7 @@ class TheseService extends BaseService implements ListenerAggregateInterface
        //
        if ($suppressionAttestationsAVerifier) {
            $rule = new SuppressionAttestationsRequiseRule($these, $version);
            $suppressionRequise = $rule->computeEstRequise();
            $suppressionRequise = $rule->execute();

            if ($suppressionRequise) {
                $this->deleteAttestationForVersion($these, $version);