src/Order/Service/OrderActivityService.php line 38

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\Order\Service;
  3. use App\Order\Entity\Order;
  4. use App\Order\Entity\OrderActivity;
  5. use App\Order\Event\OrderCancelledEvent;
  6. use App\Order\Event\OrderPackedEvent;
  7. use App\Order\Repository\OrderActivityRepository;
  8. use Doctrine\ORM\ORMException;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class OrderActivityService implements EventSubscriberInterface
  11. {
  12.     private OrderActivityRepository $repository;
  13.     private OrderService $orderService;
  14.     /**
  15.      * @return array The event names to listen to
  16.      */
  17.     public static function getSubscribedEvents(): array
  18.     {
  19.         return [
  20.             OrderPackedEvent::class => 'onOrderPacked',
  21.         ];
  22.     }
  23.     public function __construct(OrderActivityRepository $repositoryOrderService $orderService)
  24.     {
  25.         $this->repository $repository;
  26.         $this->orderService $orderService;
  27.     }
  28.     /**
  29.      * @throws ORMException
  30.      */
  31.     public function onOrderPacked(OrderPackedEvent $event): void
  32.     {
  33.         // TODO: Use messenger...
  34.         $orderId $event->getOrder();
  35.         $order $this->orderService->getOrderById($orderId);
  36.         $activity = new OrderActivity();
  37.         $activity->setOrder($order);
  38.         $activity->settype('order.packed');
  39.         $activity->setName('armó el pedido #' $order->getId());
  40.         // Persist
  41.         $this->repository->add($activitytrue);
  42.     }
  43.     /**
  44.      * @return OrderActivity[]
  45.      */
  46.     public function getActivityForOrder(Order $order): array
  47.     {
  48.         return $order->getActivity()->toArray();
  49.     }
  50. }