src/EventSubscriber/Api/EstimateDuplicateSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. // api/src/EventSubscriber/BookMailSubscriber.php
  3. namespace App\EventSubscriber\Api;
  4. use ApiPlatform\Core\EventListener\EventPriorities;
  5. use App\Entity\Estimate;
  6. use App\Repository\EstimateRepository;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpKernel\Event\ViewEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. final class EstimateDuplicateSubscriber implements EventSubscriberInterface
  11. {
  12. /**
  13. * @var EstimateRepository
  14. */
  15. private $estimateRepository;
  16. public function __construct(EstimateRepository $estimateRepository)
  17. {
  18. $this->estimateRepository = $estimateRepository;
  19. }
  20. public static function getSubscribedEvents()
  21. {
  22. return [
  23. KernelEvents::VIEW => ['validate', EventPriorities::PRE_VALIDATE],
  24. ];
  25. }
  26. public function validate(\Symfony\Component\HttpKernel\Event\ViewEvent $event)
  27. {
  28. if ($event->getRequest()->attributes->get('_route') === 'api_estimates_duplicate_collection') {
  29. /** @var Estimate $estimate */
  30. $duplicate = clone $this->estimateRepository->find($event->getRequest()->attributes->get('id'));
  31. $duplicate->setCreated(time());
  32. $duplicate->setUpdated(time());
  33. $duplicate->setOrderedAt(null);
  34. $duplicate->setDeliveryDate(null);
  35. $duplicate->setId(null);
  36. $event->setControllerResult($duplicate);
  37. }
  38. }
  39. }