src/Component/RFQ/EventListener/RfqCreatedListener.php line 23

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\RFQ\EventListener;
  4. use BitBag\OpenMarketplace\Component\Organization\Entity\OrganizationInterface;
  5. use BitBag\OpenMarketplace\Component\RFQ\Email\RFQEmailManagerInterface;
  6. use BitBag\OpenMarketplace\Component\RFQ\Entity\RFQInterface;
  7. use BitBag\OpenMarketplace\Component\RFQ\StateMachine\RFQStates;
  8. use BitBag\OpenMarketplace\Component\RFQ\StateMachine\RFQTransitions;
  9. use SM\Factory\FactoryInterface;
  10. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  11. final class RfqCreatedListener
  12. {
  13.     public function __construct(
  14.         private FactoryInterface $rfqSMFactory,
  15.         private RFQEmailManagerInterface $rfqEmailManager,
  16.     ) {
  17.     }
  18.     public function __invoke(ResourceControllerEvent $event): void
  19.     {
  20.         $rfq $event->getSubject();
  21.         if (!$rfq instanceof RFQInterface || RFQStates::STATE_NEW !== $rfq->getState()) {
  22.             return;
  23.         }
  24.         $organization $rfq->getBuyer();
  25.         if (!$organization instanceof OrganizationInterface || !$organization->hasBillingData()) {
  26.             return;
  27.         }
  28.         $rfqSM $this->rfqSMFactory->get($rfqRFQTransitions::GRAPH);
  29.         $rfqSM->apply(RFQTransitions::TRANSITION_OPEN);
  30.         $this->rfqEmailManager->sendRfqOpenEmail($rfq);
  31.     }
  32. }