<?php
namespace App\EventSubscriber;
use App\Entity\Commune;
use App\Entity\AnnuairePapier;
use Doctrine\ORM\EntityManagerInterface;
use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
use mysql_xdevapi\Exception;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class annuairePapierSubscriber implements EventSubscriberInterface
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public static function getSubscribedEvents()
{
return [
BeforeEntityPersistedEvent::class => ['setCommune'],
BeforeEntityUpdatedEvent::class => ['updateCommune']
];
}
public function setCommune(BeforeEntityPersistedEvent $event)
{
try{
$entity = $event->getEntityInstance();
if (($entity instanceof AnnuairePapier)) {
$entityManager = $this->entityManager->getRepository(Commune::class)->find($entity->getCommunesSansAn());
$entity->setCommune($entityManager);
$entity->setProvince($entityManager->getIdProvince());
}
} catch (\Doctrine\ORM\ORMException $e){
return $e;
}
}
public function updateCommune(BeforeEntityUpdatedEvent $event)
{
try{
$entity = $event->getEntityInstance();
if (($entity instanceof AnnuairePapier)) {
$entityManager = $this->entityManager->getRepository(Commune::class)->find($entity->getCommunesSansAn());
$entity->setCommune($entityManager);
$entity->setProvince($entityManager->getIdProvince());
}
} catch (\Doctrine\ORM\ORMException $e){
return $e;
}
}
}