src/Component/RFQ/EventListener/AttachmentListener.php line 30

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace BitBag\OpenMarketplace\Component\RFQ\EventListener;
  4. use BitBag\OpenMarketplace\Component\RFQ\Entity\AttachmentInterface;
  5. use BitBag\OpenMarketplace\Component\RFQ\Entity\MessageInterface;
  6. use BitBag\OpenMarketplace\Component\RFQ\Entity\RFQInterface;
  7. use BitBag\OpenMarketplace\Component\RFQ\Uploader\AttachmentUploaderInterface;
  8. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  9. final class AttachmentListener
  10. {
  11.     public function __construct(
  12.         private AttachmentUploaderInterface $attachmentUploader,
  13.     ) {
  14.     }
  15.     public function onMessageCreate(ResourceControllerEvent $event): void
  16.     {
  17.         $message $event->getSubject();
  18.         if (!$message instanceof MessageInterface) {
  19.             return;
  20.         }
  21.         $this->uploadAttachments($message);
  22.     }
  23.     public function onRFQCreate(ResourceControllerEvent $event): void
  24.     {
  25.         $rfq $event->getSubject();
  26.         if (!$rfq instanceof RFQInterface) {
  27.             return;
  28.         }
  29.         $message $rfq->getMessages()->first();
  30.         if (!$message instanceof MessageInterface) {
  31.             return;
  32.         }
  33.         $this->uploadAttachments($message);
  34.     }
  35.     private function uploadAttachments(MessageInterface $message): void
  36.     {
  37.         /** @var AttachmentInterface $attachment */
  38.         foreach ($message->getAttachments() as $attachment) {
  39.             $this->attachmentUploader->upload($attachment);
  40.         }
  41.     }
  42. }