src/EventSubscriber/OrderRequestEventSubscriber.php line 59

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\OrderRequestEvent;
  4. use App\Service\OrderRequestNumberGenerator;
  5. use App\Service\OrderRequestService;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class OrderRequestEventSubscriber implements EventSubscriberInterface
  9. {
  10. /**
  11. * @var OrderRequestService
  12. */
  13. private $service;
  14. /**
  15. * @var OrderRequestNumberGenerator
  16. */
  17. private $numberGenerator;
  18. /**
  19. * @var EntityManagerInterface
  20. */
  21. private $entityManager;
  22. /**
  23. * OrderRequestEventSubscriber constructor.
  24. *
  25. * @param OrderRequestService $service
  26. * @param OrderRequestNumberGenerator $numberGenerator
  27. * @param EntityManagerInterface $entityManager
  28. */
  29. public function __construct(OrderRequestService $service, OrderRequestNumberGenerator $numberGenerator, EntityManagerInterface $entityManager)
  30. {
  31. $this->service = $service;
  32. $this->numberGenerator = $numberGenerator;
  33. $this->entityManager = $entityManager;
  34. }
  35. public static function getSubscribedEvents()
  36. {
  37. return [
  38. OrderRequestEvent::MODIFY => 'onModify',
  39. OrderRequestEvent::CREATE => 'onCreate',
  40. OrderRequestEvent::DELETE => 'onDelete',
  41. ];
  42. }
  43. public function onModify(OrderRequestEvent $event)
  44. {
  45. $this->service->onModification($event);
  46. }
  47. public function onDelete(OrderRequestEvent $event)
  48. {
  49. $this->service->onSoftDelete($event);
  50. }
  51. public function onCreate(OrderRequestEvent $event)
  52. {
  53. $orderRequest = $event->getOrderRequest();
  54. $orderRequest->setArticleNumber($this->numberGenerator->generate());
  55. $this->entityManager->flush();
  56. }
  57. }