<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Inquiry\EventListener;
use BitBag\OpenMarketplace\Component\Inquiry\Email\InquiryEmailManagerInterface;
use BitBag\OpenMarketplace\Component\Inquiry\Entity\InquiryInterface;
use BitBag\OpenMarketplace\Component\Inquiry\Entity\MessageInterface;
use BitBag\OpenMarketplace\Component\Organization\Entity\OrganizationInterface;
use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
final class InquiryCreatedListener
{
public function __construct(
private InquiryEmailManagerInterface $inquiryEmailManager,
) {
}
public function __invoke(ResourceControllerEvent $event): void
{
$inquiry = $event->getSubject();
if (!$inquiry instanceof InquiryInterface) {
return;
}
/** @var MessageInterface $message */
foreach ($inquiry->getMessages() as $message) {
$organization = $message->getCustomer()?->getOrganization();
if ($organization instanceof OrganizationInterface && $organization->hasBillingData()) {
$inquiry->setState(InquiryInterface::STATE_OPEN);
$this->inquiryEmailManager->sendInquiryOpenEmail($inquiry);
break;
}
}
}
}