src/Component/Inquiry/EventListener/MessageListener.php line 20

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\Inquiry\EventListener;
  4. use BitBag\OpenMarketplace\Component\Inquiry\Email\InquiryEmailManagerInterface;
  5. use BitBag\OpenMarketplace\Component\Inquiry\Entity\InquiryInterface;
  6. use BitBag\OpenMarketplace\Component\Inquiry\Entity\MessageInterface;
  7. use BitBag\OpenMarketplace\Component\Organization\Entity\OrganizationInterface;
  8. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  9. final class MessageListener
  10. {
  11.     public function __construct(
  12.         private InquiryEmailManagerInterface $inquiryEmailManager,
  13.     ) {
  14.     }
  15.     public function __invoke(ResourceControllerEvent $event): void
  16.     {
  17.         $message $event->getSubject();
  18.         if (!$message instanceof MessageInterface) {
  19.             return;
  20.         }
  21.         $inquiry $message->getInquiry();
  22.         if (!$inquiry instanceof InquiryInterface) {
  23.             return;
  24.         }
  25.         $this->inquiryEmailManager->sendNewMessageEmail($this->resolveOrganization($inquiry$message), $inquiry);
  26.     }
  27.     private function resolveOrganization(InquiryInterface $inquiryMessageInterface $message): ?OrganizationInterface
  28.     {
  29.         $buyerCustomers $inquiry->getBuyer()?->getCustomers();
  30.         if ($buyerCustomers?->contains($message->getCustomer())) {
  31.             return $inquiry->getSeller();
  32.         }
  33.         return $inquiry->getBuyer();
  34.     }
  35. }