src/EventListener/VoucherUploadSubscriber.php line 36
<?phpnamespace App\EventListener;use App\Atd\Supplier\Atd\Voucher\Service\VoucherService;use App\Atd\Utilities\HttpClientResponse;use App\enum\Events;use App\Event\VoucherUploadEvent;use App\Event\VoucherUploadFailEvent;use App\Event\VoucherUploadSuccessEvent;use Psr\EventDispatcher\EventDispatcherInterface;use Psr\Log\LoggerInterface;use Symfony\Component\EventDispatcher\EventSubscriberInterface;class VoucherUploadSubscriber implements EventSubscriberInterface{public function __construct(private readonly VoucherService $voucherService,private readonly LoggerInterface $logger,private readonly EventDispatcherInterface $eventDispatcher) {}public static function getSubscribedEvents(): array{return [Events::VOUCHER_UPLOAD_TRIGGER => 'onVoucherUploadTriggered',Events::VOUCHER_UPLOAD_SUCCESS => 'onUploadSucceeded',Events::VOUCHER_UPLOAD_FAIL => 'onUploadFailed',];}/*** @throws \Throwable*/public function onVoucherUploadTriggered(VoucherUploadEvent $event): void{$voucherDto = $event->getVoucherDto();$voucherFileId = $voucherDto->getMeta()['voucher_id'];$this->logger->info(sprintf('Uploading Voucher File ID [%s]', $voucherFileId));try {/** @var HttpClientResponse $response */$response = $this->voucherService->upload($voucherDto);if ('success' == $response->getStatus()) {$this->eventDispatcher->dispatch(new VoucherUploadSuccessEvent($voucherDto, $response), Events::VOUCHER_UPLOAD_SUCCESS);} else {$this->eventDispatcher->dispatch(new VoucherUploadFailEvent($voucherDto, $response), Events::VOUCHER_UPLOAD_FAIL);}} catch (\Throwable $e) {$this->logger->error($e->getMessage());// maybe dispatch general error herethrow $e;}}public function onUploadSucceeded(VoucherUploadSuccessEvent $event): void{$this->logger->info(sprintf('Voucher Upload (voucher_file_id)[%s] Success [%s]',$event->getVoucherDto()->getMeta()['voucher_id'],$event->getClientResponse()->getPhrase()));}public function onUploadFailed(VoucherUploadFailEvent $event): void{$this->logger->error(sprintf('Voucher Upload (voucher_file_id)[%s] FAILED [%s]',$event->getVoucherDto()->getMeta()['voucher_id'],$event->getClientResponse()->getPhrase()));}}