. */ namespace App\Controller; use App\Services\ImportExportSystem\EntityExporter; use App\Services\Parts\PartsTableActionHandler; use Doctrine\ORM\EntityManagerInterface; use InvalidArgumentException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class PartImportExportController extends AbstractController { private EntityManagerInterface $entityManager; private PartsTableActionHandler $partsTableActionHandler; public function __construct(EntityManagerInterface $entityManager, PartsTableActionHandler $partsTableActionHandler) { $this->entityManager = $entityManager; $this->partsTableActionHandler = $partsTableActionHandler; } /** * @Route("/parts/export", name="parts_export", methods={"GET"}) * @return Response */ public function exportParts(Request $request, EntityExporter $entityExporter): Response { $ids = $request->query->get('ids', ''); $parts = $this->partsTableActionHandler->idStringToArray($ids); if (empty($parts)) { throw new \RuntimeException('No parts found!'); } //Ensure that we have access to the parts foreach ($parts as $part) { $this->denyAccessUnlessGranted('read', $part); } return $entityExporter->exportEntityFromRequest($parts, $request); } }