src/Component/RFQ/EventListener/FinishRfqRegistrationListener.php line 25

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\RFQ\EventListener;
  4. use BitBag\OpenMarketplace\Component\Customer\Model\CustomerInterface;
  5. use BitBag\OpenMarketplace\Component\RFQ\Email\RFQEmailManagerInterface;
  6. use BitBag\OpenMarketplace\Component\RFQ\Repository\RFQRepositoryInterface;
  7. use BitBag\OpenMarketplace\Component\RFQ\StateMachine\RFQTransitions;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use SM\Factory\FactoryInterface;
  10. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  11. final class FinishRfqRegistrationListener
  12. {
  13.     public function __construct(
  14.         private FactoryInterface $rfqSMFactory,
  15.         private RFQRepositoryInterface $rfqRepository,
  16.         private EntityManagerInterface $em,
  17.         private RFQEmailManagerInterface $rfqEmailManager,
  18.         ) {
  19.     }
  20.     public function __invoke(ResourceControllerEvent $event): void
  21.     {
  22.         $customer $event->getSubject();
  23.         if (!$customer instanceof CustomerInterface) {
  24.             return;
  25.         }
  26.         foreach ($this->rfqRepository->findNewByCustomer($customer) as $rfq) {
  27.             $rfqSM $this->rfqSMFactory->get($rfqRFQTransitions::GRAPH);
  28.             $rfqSM->apply(RFQTransitions::TRANSITION_OPEN);
  29.             $this->em->persist($rfq);
  30.             $this->rfqEmailManager->sendRfqOpenEmail($rfq);
  31.         }
  32.         $this->em->flush();
  33.     }
  34. }