<?php
declare(strict_types=1);
namespace App\Controller\Admin;
use App\Entity\Firmante;
use App\Repository\FirmanteRepository;
use InvalidArgumentException;
use Sonata\AdminBundle\Controller\CRUDController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
final class FirmanteAdminController extends CRUDController
{
public function __construct(private FirmanteRepository $repository)
{
}
public function getFirmantesByTipoIdiomaAction(Request $request)
{
try {
$firmanteS = [];
$resultS = $this->repository->searchByTipoIdioma(
$request->query->get('q'),
$request->query->get('tipo'),
$request->query->get('idioma'),
$request->query->get('unidadNegocio'),
$request->query->get('page_limit'),
$request->query->get('page') ?: 1,
$request->query->get('id') ?: null,
);
if (!count($resultS)) {
throw new InvalidArgumentException();
}
foreach ($resultS as $firmante) {
$firmanteS[] = [
'id' => $firmante->getId(),
'text' => $firmante->getNombre(),
];
}
return new JsonResponse(
[
'results' => $firmanteS,
'more' => count($firmanteS) == $request->query->get('page_limit'),
],
200
);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['results' => [], 'more' => false], 400);
}
}
}