<?php
namespace App\EventSubscriber;
use App\Entity\FormulaireInput;
use App\Entity\Projet;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ManagerRegistry;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityDeletedEvent;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class ProjectSubscriber implements EventSubscriberInterface
{
private $entityManager;
private ManagerRegistry $manager;
private SessionInterface $session;
public function __construct(
ManagerRegistry $manager,
EntityManagerInterface $entityManager,
LoggerInterface $logger,
SessionInterface $session
) {
$this->manager = $manager;
$this->entityManager = $entityManager;
$this->session = $session;
$this->logger = $logger;
}
public static function getSubscribedEvents()
{
return [
AfterEntityPersistedEvent::class => ['afterAdd'],
AfterEntityUpdatedEvent::class => ['afterUpdate'],
AfterEntityDeletedEvent::class => ['afterDelete'],
];
}
public function afterAdd(AfterEntityPersistedEvent $event)
{
$entity = $event->getEntityInstance();
if ($entity instanceof Projet) {
$inputtext = new FormulaireInput();
$inputtext->setType('text');
$inputtext->setProjet($entity);
$this->entityManager->persist($inputtext);
$inputnumber = new FormulaireInput();
$inputnumber->setType('number');
$inputnumber->setProjet($entity);
$this->entityManager->persist($inputnumber);
$inputtel = new FormulaireInput();
$inputtel->setType('tel');
$inputtel->setProjet($entity);
$this->entityManager->persist($inputtel);
$inputemail = new FormulaireInput();
$inputemail->setType('email');
$inputemail->setProjet($entity);
$this->entityManager->persist($inputemail);
$inputtextarea = new FormulaireInput();
$inputtextarea->setType('textarea');
$inputtextarea->setProjet($entity);
$this->entityManager->persist($inputtextarea);
$inputradio = new FormulaireInput();
$inputradio->setType('radio');
$inputradio->setProjet($entity);
$this->entityManager->persist($inputradio);
$inputcheckbox = new FormulaireInput();
$inputcheckbox->setType('checkbox');
$inputcheckbox->setProjet($entity);
$this->entityManager->persist($inputcheckbox);
$inputlist = new FormulaireInput();
$inputlist->setType('list');
$inputlist->setProjet($entity);
$this->entityManager->persist($inputlist);
$this->session->getFlashBag()->add('flash', ['label' => 'success', 'title' => 'Succès', 'message' => 'Le projet a été crée avec succès']);
} else {
return;
}
}
public function afterUpdate(AfterEntityUpdatedEvent $event): void
{
$this->session->getFlashBag()->add('flash', ['label' => 'success', 'title' => 'Succès', 'message' => 'Le projet a été modifié avec succès']);
}
public function afterDelete(AfterEntityDeletedEvent $event): void
{
$this->session->getFlashBag()->add('flash', ['label' => 'success', 'title' => 'Succès', 'message' => 'Le projet a été supprimé avec succès']);
}
}