<?php
declare(strict_types=1);
namespace BitBag\OpenMarketplace\Component\Core\Admin\Listener;
use BitBag\OpenMarketplace\Component\Core\Common\Model\Datasheet\DatasheetAwareInterface;
use Sylius\Component\Core\Uploader\ImageUploaderInterface;
use Symfony\Component\EventDispatcher\GenericEvent;
use Webmozart\Assert\Assert;
final class DatasheetsUploadListener
{
public function __construct(private ImageUploaderInterface $datasheetsUploader)
{
}
public function uploadDatasheets(GenericEvent $event): void
{
$subject = $event->getSubject();
Assert::isInstanceOf($subject, DatasheetAwareInterface::class);
$this->uploadSubjectDatasheets($subject);
}
private function uploadSubjectDatasheets(DatasheetAwareInterface $subject): void
{
$datasheets = $subject->getDatasheets();
foreach ($datasheets as $datasheet) {
if ($datasheet->hasFile()) {
$this->datasheetsUploader->upload($datasheet);
$file = $datasheet->getFile();
$datasheet->setOriginalFilename($file->getClientOriginalName());
$datasheet->setType($file->getType());
}
if (null === $datasheet->getPath()) {
$datasheets->removeElement($datasheet);
}
}
}
}