<?php
namespace App\Controller\Ajax\Privado\Ajustes;
use App\Entity\Ajustes\Pedido;
use App\Entity\Ajustes\Usuario;
use App\Entity\Catalogo\Categoria;
use App\Form\Privado\Entidades\Ajustes\PedidoType;
use App\Form\Publico\Pedido\PedidoPaso2Type;
use App\Repository\Ajustes\CartesExcelRepository;
use App\Repository\Ajustes\DescuentoRepository;
use App\Repository\Ajustes\GradeadaRepository;
use App\Repository\Ajustes\PedidoRepository;
use App\Repository\Ajustes\UsuarioRepository;
use App\Repository\Catalogo\CategoriaRepository;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
/**
* @Route("/gradeadas", name="ajgrad_")
*/
class GradeadasAjaxController extends AbstractController
{
private $serializer;
private $repo;
private $pb;
private $pg;
private $cardRepo;
protected $em;
public function __construct(GradeadaRepository $repo, ParameterBagInterface $pb, PaginatorInterface $pg, EntityManagerInterface $em, CartesExcelRepository $cardRepo)
{
$this->repo = $repo;
$this->pb = $pb;
$this->pg = $pg;
$this->cardRepo = $cardRepo;
$this->em = $em;
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$metadataAwareNameConverter = new MetadataAwareNameConverter($classMetadataFactory);
$this->serializer = new Serializer(
[
new DateTimeNormalizer(['datetime_format' => 'd-m-Y H:i']),
new ObjectNormalizer($classMetadataFactory, $metadataAwareNameConverter),
],
[new JsonEncoder()]
);
}
/**
* @Route("/autocompletar", name="autocomplete")
*/
public function autocompletar(Request $request)
{
$message = "";
$semafor = $paginator = false;
$data = [];
if($request->get('q') !== null){
$filters = [
'texto' => $request->get('q')
];
if ($request->query->get('params', false)) {
$filters = array_merge($filters, $request->query->get('params'));
}
$resultBD = $this->cardRepo->filter($filters);
if($resultBD){
$semafor = true;
$data = $this->serializer->normalize($resultBD, null, ['groups' => 'Simple']);
}
$object = $data;
}
return new Response($this->serializer->serialize($object, "json"), ($semafor ? Response::HTTP_OK : Response::HTTP_BAD_REQUEST));
}
}