src/Component/Inquiry/EventListener/FinishInquiryRegistrationListener.php line 23

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Inquiry\EventListener;
  4. use BitBag\OpenMarketplace\Component\Customer\Model\CustomerInterface;
  5. use BitBag\OpenMarketplace\Component\Inquiry\Email\InquiryEmailManagerInterface;
  6. use BitBag\OpenMarketplace\Component\Inquiry\Entity\InquiryInterface;
  7. use BitBag\OpenMarketplace\Component\Inquiry\Repository\InquiryRepositoryInterface;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  10. final class FinishInquiryRegistrationListener
  11. {
  12.     public function __construct(
  13.         private InquiryRepositoryInterface $inquiryRepository,
  14.         private EntityManagerInterface $em,
  15.         private InquiryEmailManagerInterface $inquiryEmailManager,
  16.         ) {
  17.     }
  18.     public function __invoke(ResourceControllerEvent $event): void
  19.     {
  20.         $customer $event->getSubject();
  21.         if (!$customer instanceof CustomerInterface) {
  22.             return;
  23.         }
  24.         /** @var InquiryInterface $inquiry */
  25.         foreach ($this->inquiryRepository->findNewByCustomer($customer) as $inquiry) {
  26.             $inquiry->setState(InquiryInterface::STATE_OPEN);
  27.             $this->em->persist($inquiry);
  28.             $this->inquiryEmailManager->sendInquiryOpenEmail($inquiry);
  29.         }
  30.         $this->em->flush();
  31.     }
  32. }