<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Inquiry\EventListener;
use BitBag\OpenMarketplace\Component\Customer\Model\CustomerInterface;
use BitBag\OpenMarketplace\Component\Inquiry\Email\InquiryEmailManagerInterface;
use BitBag\OpenMarketplace\Component\Inquiry\Entity\InquiryInterface;
use BitBag\OpenMarketplace\Component\Inquiry\Repository\InquiryRepositoryInterface;
use Doctrine\ORM\EntityManagerInterface;
use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
final class FinishInquiryRegistrationListener
{
public function __construct(
private InquiryRepositoryInterface $inquiryRepository,
private EntityManagerInterface $em,
private InquiryEmailManagerInterface $inquiryEmailManager,
) {
}
public function __invoke(ResourceControllerEvent $event): void
{
$customer = $event->getSubject();
if (!$customer instanceof CustomerInterface) {
return;
}
/** @var InquiryInterface $inquiry */
foreach ($this->inquiryRepository->findNewByCustomer($customer) as $inquiry) {
$inquiry->setState(InquiryInterface::STATE_OPEN);
$this->em->persist($inquiry);
$this->inquiryEmailManager->sendInquiryOpenEmail($inquiry);
}
$this->em->flush();
}
}