<?php
# src/EventSubscriber/EasyAdminSubscriber.php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Doctrine\ORM\Event\LifecycleEventArgs;
use App\Entity\EStateAd;
use App\Entity\EStateAdImage;
use App\Entity\AgencyUser;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class EasyAdminSubscriber implements EventSubscriberInterface
{
private $mailer;
private $templating;
private $params;
public function __construct(TokenStorageInterface $tokenStorage, \Swift_Mailer $mailer, \Twig_Environment $templating, ParameterBagInterface $params)
{
$this->tokenStorage = $tokenStorage;
$this->mailer = $mailer;
$this->templating = $templating;
$this->params = $params;
}
public static function getSubscribedEvents()
{
return array(
'easy_admin.pre_update' => array('setBlogPostSlug'),
'easy_admin.pre_persist' => array('setAgencyId'),
);
}
public function setBlogPostSlug(GenericEvent $event)
{
$request = $event->getArgument('request');
$session = $request->getSession();
$em = $event->getArgument('em');
//dd($session);
$entity = $event->getSubject();
if ($entity instanceof EStateAdImage){
$oldEntity = $em->getUnitOfWork()->getOriginalEntityData($entity);
dd($oldEntity, $entity);
}
if ($entity instanceof EStateAd) {
$oldEntity = $em->getUnitOfWork()->getOriginalEntityData($entity);
$jsonData = json_decode($entity->getCity());
$entity->setCity($jsonData[0]->value);
/*dd($oldEntity['estatead_image1'] , $entity->getEStateadImage1());*/
if(
($oldEntity['price'] !== $entity->getPrice()) ||
($oldEntity['free_text'] !== $entity->getFreetext()) ||
($entity->getHasModifiedImages())
)
{
$entity->setStatus(0);
if($entity->getMandateType() > 1){
$date_j2 = new \DateTime('now');
$date_j2->add(new \DateInterval('P2D'));
$entity->setExpirationDate($date_j2);
}
$message2 = (new \Swift_Message('[PREUMS] Edition d\'une annonce'))
->setFrom('postmaster@nouveausite.fr')
->setTo($this->params->get('admin_mail'))
->setBody(
$this->templating->render(
// templates/emails/registration.html.twig
'emails/estatead_edition.html.twig',
[]
),
'text/html'
)
;
if(!$this->mailer->send($message2, $failures))
{
dd($failures);
}
$session->getFlashBag()->add('success', 'estatead_edit_validation');
}
} else {
return;
}
}
public function setAgencyId(GenericEvent $event){
/*dd($event, "easyadminsubscriber");*/
$entity = $event->getSubject();
if($entity instanceof EStateAd){
$entity->setHasModifiedImages(false);
}
if($entity instanceof AgencyUser) {
if (!$token = $this->tokenStorage->getToken()) {
return ;
}
if (!$user = $token->getUser()) {
return ;
}
$entity->setAgencyId($user->getAgencyId());
$entity->setRoles(array('ROLE_NORMAL_USER', 'ROLE_AGENCY_USER', 'ROLE_USER'));
$entity->setCreatedAt(new \DateTime('now', new \DateTimeZone('Europe/Paris')));
$event['entity'] = $entity;
}
}
}