<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\RFQ\EventListener;
use BitBag\OpenMarketplace\Component\RFQ\Entity\AttachmentInterface;
use BitBag\OpenMarketplace\Component\RFQ\Entity\MessageInterface;
use BitBag\OpenMarketplace\Component\RFQ\Entity\RFQInterface;
use BitBag\OpenMarketplace\Component\RFQ\Uploader\AttachmentUploaderInterface;
use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
final class AttachmentListener
{
public function __construct(
private AttachmentUploaderInterface $attachmentUploader,
) {
}
public function onMessageCreate(ResourceControllerEvent $event): void
{
$message = $event->getSubject();
if (!$message instanceof MessageInterface) {
return;
}
$this->uploadAttachments($message);
}
public function onRFQCreate(ResourceControllerEvent $event): void
{
$rfq = $event->getSubject();
if (!$rfq instanceof RFQInterface) {
return;
}
$message = $rfq->getMessages()->first();
if (!$message instanceof MessageInterface) {
return;
}
$this->uploadAttachments($message);
}
private function uploadAttachments(MessageInterface $message): void
{
/** @var AttachmentInterface $attachment */
foreach ($message->getAttachments() as $attachment) {
$this->attachmentUploader->upload($attachment);
}
}
}