Created
January 23, 2018 18:25
-
-
Save benjaminrau/d4f9d75af9bc714e49cc44a0c1f87b9f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Emma\AppBundle\EventSubscriber; | |
use ApiPlatform\Core\EventListener\EventPriorities; | |
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
use Emma\AppBundle\AppBundleEvents; | |
use Symfony\Component\EventDispatcher\EventSubscriberInterface; | |
use Symfony\Component\HttpFoundation\Request; | |
use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent; | |
use Symfony\Component\HttpKernel\KernelEvents; | |
use Emma\AppBundle\Event\EntityEvent; | |
class EntityEventSubscriber implements EventSubscriberInterface | |
{ | |
/** | |
* @var EventDispatcherInterface | |
*/ | |
private $eventDispatcher; | |
public function __construct(EventDispatcherInterface $eventDispatcher) { | |
$this->eventDispatcher = $eventDispatcher; | |
} | |
public static function getSubscribedEvents() | |
{ | |
return [ | |
KernelEvents::VIEW => [ | |
['triggerPrePersistEvents', EventPriorities::PRE_WRITE], | |
['triggerPostPersistEvents', EventPriorities::POST_WRITE], | |
['triggerPreUpdateEvents', EventPriorities::PRE_WRITE], | |
['triggerPostUpdateEvents', EventPriorities::POST_WRITE], | |
['triggerPreRemoveEvents', EventPriorities::PRE_WRITE] | |
], | |
]; | |
} | |
public function triggerPrePersistEvents(GetResponseForControllerResultEvent $event) { | |
$entity = $event->getControllerResult(); | |
$method = $event->getRequest()->getMethod(); | |
if ($method !== Request::METHOD_POST) { | |
return; | |
} | |
switch (true) { | |
case $entity instanceof Inquiry: | |
$this->eventDispatcher->dispatch(AppBundleEvents::EMMA_INQUIRY_PRE_PERSIST, new EntityEvent($entity)); | |
break; | |
} | |
} | |
public function triggerPostPersistEvents(GetResponseForControllerResultEvent $event) { | |
$entity = $event->getControllerResult(); | |
$method = $event->getRequest()->getMethod(); | |
if ($method !== Request::METHOD_POST) { | |
return; | |
} | |
} | |
public function triggerPreUpdateEvents(GetResponseForControllerResultEvent $event) { | |
$method = $event->getRequest()->getMethod(); | |
if ($method !== Request::METHOD_PUT) { | |
return; | |
} | |
} | |
public function triggerPostUpdateEvents(GetResponseForControllerResultEvent $event) { | |
$entity = $event->getControllerResult(); | |
$method = $event->getRequest()->getMethod(); | |
if ($method !== Request::METHOD_PUT) { | |
return; | |
} | |
} | |
public function triggerPreRemoveEvents(GetResponseForControllerResultEvent $event) { | |
$method = $event->getRequest()->getMethod(); | |
if ($method !== Request::METHOD_DELETE) { | |
return; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment