ExportHandler.php 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Message\Handler;
  4. use App\Message\Message\Export;
  5. use App\Repository\Access\AccessRepository;
  6. use App\Service\MercureHub;
  7. use App\Service\Notifier;
  8. use App\Service\ServiceIterator\ExporterIterator;
  9. use Symfony\Component\Messenger\Attribute\AsMessageHandler;
  10. #[AsMessageHandler(priority: 1)]
  11. class ExportHandler
  12. {
  13. public function __construct(
  14. private ExporterIterator $handler,
  15. private MercureHub $mercureHub,
  16. private AccessRepository $accessRepository,
  17. private Notifier $notifier,
  18. ) {
  19. }
  20. public function __invoke(Export $export): void
  21. {
  22. $exportRequest = $export->getExportRequest();
  23. $exportService = $this->handler->getExporterFor($exportRequest);
  24. $file = $exportService->export($exportRequest);
  25. $this->mercureHub->publishUpdate($exportRequest->getRequesterId(), $file);
  26. $this->notifier->notifyExport(
  27. $this->accessRepository->find($exportRequest->getRequesterId()),
  28. $file
  29. );
  30. }
  31. }