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

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