<?php
namespace App\EventListener;
use App\Atd\Domain\VoucherDto;
use App\enum\Events;
use App\Event\VoucherUploadEvent;
use Atd\FileStorageBundle\Event\FileStorageCompletedSuccessEvent;
use Atd\FileStorageBundle\EventListener\FileStorageCompletedSubscriber;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\Log\LoggerInterface;
class FSCompletedSubscriber extends FileStorageCompletedSubscriber
{
public function __construct(
private EventDispatcherInterface $eventDispatcher,
private LoggerInterface $logger
) {
}
public function onCompletedSuccess(FileStorageCompletedSuccessEvent $event): void
{
if ($event->getStorageResult()->isSuccess()) {
foreach ($event->getMessages() as $message) {
$this->logger->info($message);
}
$meta = $event->getMeta();
if ($meta['voucher_id']) {
$this->eventDispatcher->dispatch(
new VoucherUploadEvent(
new VoucherDto(
$event->getStorageResult()->toArray()
)
),
Events::VOUCHER_UPLOAD_TRIGGER
);
} else {
$this->logger->warning(sprintf('Could not upload voucher - no voucher_id! (probably an unpaid order)'));
}
}
}
}