<?php
/**
* Created by PhpStorm.
* User: sebastiantovar
* Date: 2019-06-26
* Time: 09:18
*/
namespace App\EventSubscriber\Onboarding;
use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\Onboarding\Lead;
use App\Services\UtilsService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class LeadPreWriteSubscriber implements EventSubscriberInterface
{
private $utilsService;
private $request;
public function __construct(UtilsService $utilsService)
{
$this->utilsService = $utilsService;
}
public function onKernelView(ViewEvent $event)
{
if ($this->utilsService->isAPublicRequest($event)) {
return;
}
$lead = $event->getControllerResult();
$this->request = $event->getRequest();
$method = $this->request->getMethod();
if (!($lead instanceof Lead) || (Request::METHOD_POST !== $method)) {
return;
}
$lead->setId(md5(uniqid()) . '-' . time());
}
public static function getSubscribedEvents()
{
return [
KernelEvents::VIEW => ['onKernelView', EventPriorities::PRE_WRITE]
];
}
}