src/EventSubscriber/Order/NotifyAdminOrderReadyToAssignSubscriber.php line 35

  1. <?php
  2. /*
  3.  * This file is part of the Pellipop project.
  4.  *
  5.  * (c) Mobizel
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace App\EventSubscriber\Order;
  12. use App\Entity\Order\Order;
  13. use App\Message\SendOrderEmailMessage;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Component\Messenger\MessageBusInterface;
  16. use Symfony\Component\Workflow\Event\Event;
  17. /**
  18.  * Notifie l'admin quand une commande devient prête à assigner (photos_received) — async.
  19.  * Ce même événement se produit aussi en mode Fuji : ne rien faire si le workflow
  20.  * imprimeurs internes n'est pas actif, pour ne pas notifier des commandes Fuji.
  21.  */
  22. final class NotifyAdminOrderReadyToAssignSubscriber implements EventSubscriberInterface
  23. {
  24.     public function __construct(
  25.         private MessageBusInterface $messageBus,
  26.         private bool $printerWorkflowEnabled,
  27.     ) {
  28.     }
  29.     public function onEnter(Event $event): void
  30.     {
  31.         if (!$this->printerWorkflowEnabled) {
  32.             return;
  33.         }
  34.         /** @var Order $order */
  35.         $order = $event->getSubject();
  36.         $orderId = $order->getId();
  37.         if (null === $orderId) {
  38.             return;
  39.         }
  40.         $this->messageBus->dispatch(new SendOrderEmailMessage(
  41.             $orderId,
  42.             SendOrderEmailMessage::TYPE_ADMIN_READY_TO_ASSIGN,
  43.         ));
  44.     }
  45.     public static function getSubscribedEvents(): array
  46.     {
  47.         return [
  48.             'workflow.order_production.entered.photos_received' => 'onEnter',
  49.         ];
  50.     }
  51. }