src/EventSubscriber/Order/NotifyAdminOrderReadyToAssignSubscriber.php line 24

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\EventSubscriber\Order;
  4. use App\Entity\Order\Order;
  5. use App\Message\SendOrderEmailMessage;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\Messenger\MessageBusInterface;
  8. use Symfony\Component\Workflow\Event\Event;
  9. use Webmozart\Assert\Assert;
  10. /**
  11.  * Notify admin when an order becomes ready to assign (photos_received) — async.
  12.  */
  13. final class NotifyAdminOrderReadyToAssignSubscriber implements EventSubscriberInterface
  14. {
  15.     public function __construct(
  16.         private MessageBusInterface $messageBus,
  17.     ) {
  18.     }
  19.     public function onEnter(Event $event): void
  20.     {
  21.         /** @var Order $order */
  22.         $order $event->getSubject();
  23.         Assert::isInstanceOf($orderOrder::class);
  24.         $orderId $order->getId();
  25.         if (null === $orderId) {
  26.             return;
  27.         }
  28.         $this->messageBus->dispatch(new SendOrderEmailMessage(
  29.             $orderId,
  30.             SendOrderEmailMessage::TYPE_ADMIN_READY_TO_ASSIGN,
  31.         ));
  32.     }
  33.     public static function getSubscribedEvents(): array
  34.     {
  35.         return [
  36.             'workflow.order_production.entered.photos_received' => 'onEnter',
  37.         ];
  38.     }
  39. }