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

Ajout d'un evenement pour purger unicaen renderer

parent 1371e798
Loading
Loading
Loading
Loading
+3 −0
Changes for module/Application/config/module.config.php: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
namespace Application;

use Application\Controller\IndexController;
use Application\Event\RgpdRenderer\RgpdRendererEvenement;
use Application\Form\ModifierLibelle\ModifierLibelleForm;
use Application\Form\ModifierLibelle\ModifierLibelleFormFactory;
use Application\Form\ModifierLibelle\ModifierLibelleHydrator;
@@ -21,6 +22,7 @@ use Application\Service\Evenement\SynchroOctopusService;
use Application\Service\Evenement\SynchroOctopusServiceFactory;
use Application\Service\Notification\NotificationService;
use Application\Service\Notification\NotificationServiceFactory;
use Application\Service\RgpdRenderer\RgpdRendererEvenementFactory;
use Application\Service\Url\UrlService;
use Application\Service\Url\UrlServiceFactory;
use Application\View\Helper\ActionIconViewHelper;
@@ -279,6 +281,7 @@ return [
            NotificationService::class => NotificationServiceFactory::class,
            UrlService::class => UrlServiceFactory::class,

            RgpdRendererEvenement::class => RgpdRendererEvenementFactory::class,
            SynchroOctopusService::class => SynchroOctopusServiceFactory::class,
        ],
    ],
+57 −0
Changes for module/Application/src/Application/Event/RgpdRenderer/RgpdRendererEvenement.php: 57 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Event\RgpdRenderer;

use Application\Provider\EvenementProvider;
use DateInterval;
use DateTime;
use Exception;
use UnicaenEvenement\Entity\Db\Etat;
use UnicaenEvenement\Entity\Db\Evenement;
use UnicaenEvenement\Entity\Db\Type;
use UnicaenEvenement\Service\Evenement\EvenementService;
use UnicaenRenderer\Service\Rendu\RenduServiceAwareTrait;

class RgpdRendererEvenement extends EvenementService {
    use RenduServiceAwareTrait;

    /**
     * @param DateTime|null $dateTraitement
     * @return Evenement
     */
    public function creer(DateTime $dateTraitement = null) : Evenement
    {
        /** @var Type $type */
        $type = $this->getTypeService()->findByCode(EvenementProvider::RGPD_UNICAEN_RENDERER);
        $description = $type->getLibelle(). ' ' .(new DateTime())->format('d/m/Y');
        $evenement = $this->createEvent($description, $description, null, $type, null, $dateTraitement);
        $this->ajouter($evenement);
        return $evenement;
    }

    /**
     * @param Evenement $evenement
     * @return string
     */
    public function traiter(Evenement $evenement) : string
    {
        try {
            //todo as param 'P3M'
            $date = (new DateTime())->sub( new DateInterval('P3M'));
            $rendus = $this->getRenduService()->getRenduOlderThan($date);
            $nb = 0;
            foreach ($rendus as $rendu) {
                $this->getRenduService()->delete($rendu);
                $nb++;
            }
        } catch(Exception $e) {
            $evenement->setLog($e->getMessage());
            $this->update($evenement);
            return Etat::ECHEC;
        }
        $evenement->setLog($nb . " rendus ont été détruits.");
        $this->update($evenement);
        return Etat::SUCCES;
    }

}
 No newline at end of file
+27 −0
Changes for module/Application/src/Application/Event/RgpdRenderer/RgpdRendererEvenementAwareTrait.php: 27 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Service\RgpdRenderer;

use Application\Event\RgpdRenderer\RgpdRendererEvenement;

trait RgpdRendererEvenementAwareTrait {

    /** @var RgpdRendererEvenement */
    private $rgpdRendererEvenement;

    /**
     * @return RgpdRendererEvenement
     */
    public function getRgpdRendererEvenement(): RgpdRendererEvenement
    {
        return $this->rgpdRendererEvenement;
    }

    /**
     * @param RgpdRendererEvenement $rgpdRendererEvenement
     */
    public function setRgpdRendererEvenement(RgpdRendererEvenement $rgpdRendererEvenement): void
    {
        $this->rgpdRendererEvenement = $rgpdRendererEvenement;
    }
}
 No newline at end of file
+33 −0
Changes for module/Application/src/Application/Event/RgpdRenderer/RgpdRendererEvenementFactory.php: 33 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php

namespace Application\Service\RgpdRenderer;

use Application\Event\RgpdRenderer\RgpdRendererEvenement;
use Doctrine\ORM\EntityManager;
use Interop\Container\ContainerInterface;
use UnicaenDbImport\Service\SynchroService;
use UnicaenEvenement\Service\Type\TypeService;
use UnicaenRenderer\Service\Rendu\RenduService;

class RgpdRendererEvenementFactory {

    /**
     * @param ContainerInterface $container
     * @return RgpdRendererEvenement
     */
    public function __invoke(ContainerInterface $container) : RgpdRendererEvenement
    {
        /**
         * @var RenduService $renduService
         * @var TypeService $typeService
         */
        $renduService = $container->get(SynchroService::class);
        $typeService = $container->get(TypeService::class);

        $service = new RgpdRendererEvenement();

        $service->setRenduService($renduService);
        $service->setTypeService($typeService);
        return $service;
    }
}
 No newline at end of file
+1 −0
Changes for module/Application/src/Application/Provider/EvenementProvider.php: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -5,5 +5,6 @@ namespace Application\Provider;
class EvenementProvider {

    const SYNCHRO_OCTOPUS = 'synchro_octopus';
    const RGPD_UNICAEN_RENDERER = 'RGPD_renderer';

}
 No newline at end of file