src/Controller/ajax/privado/Produccion/AjaxProcesoController.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ajax\privado\Produccion;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Contracts\Translation\TranslatorInterface;
  8. use Symfony\Component\Serializer\Serializer;
  9. use Symfony\Component\Serializer\Encoder\JsonEncoder;
  10. use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
  11. use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer;
  12. use Doctrine\Common\Annotations\AnnotationReader;
  13. use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
  14. use Symfony\Component\Serializer\NameConverter\MetadataAwareNameConverter;
  15. use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
  16. use App\Repository\Produccion\ProcesoRepository;
  17. use App\Form\Filter\Produccion\ProcesoFilterType;
  18. use App\Utils\CustomFilterAdv;
  19. /**
  20.  * @Route("/proceso", name="proceso_")
  21.  * 
  22.  */
  23. class AjaxProcesoController extends AbstractController
  24. {
  25.     private $trans;
  26.     private $serializer;
  27.     private $repo;
  28.     public function __construct(ProcesoRepository $repo)
  29.     {
  30.         $this->repo                 $repo;
  31.         $classMetadataFactory       = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
  32.         $metadataAwareNameConverter = new MetadataAwareNameConverter($classMetadataFactory);
  33.         $this->serializer           = new Serializer(
  34.             [
  35.                 new DateTimeNormalizer(array('datetime_format' => 'd-m-Y H:i')), 
  36.                 new ObjectNormalizer($classMetadataFactory$metadataAwareNameConverter)
  37.             ],
  38.             [new JsonEncoder()]
  39.         );
  40.     }
  41.     /**
  42.      * @Route("/lista", name="lista", methods={"GET", "POST"})
  43.      */
  44.     public function listaAll(Request $request)
  45.     {
  46.         
  47.         $semafor    false;
  48.         $mensaje    $html '';
  49.         $object     = [];
  50.         if($request !== null){
  51.             $datatables $request->request;
  52.             $draw intval($request->request->get('draw'));
  53.             $start $request->request->get('start');
  54.             $length $request->request->get('length');
  55.             $search $request->request->get('search');
  56.             $orders $request->request->get('order')[0]['dir'];
  57.             $columns $request->request->get('columns');
  58.             $default_values = [ 'sort'  => 'proceso.id' 'order' => 'DESC' 'page'  => 1'limit' => 12 ];
  59.             $filtro         = new CustomFilterAdv($request$default_values'proceso_filtro');
  60.             $data_Sesio     $filtro->checkFiltroForm();
  61.             $form_filtro    $this->createForm(ProcesoFilterType::class, $data_Sesio);
  62.             $data           $form_filtro->handleRequest($request)->getData();
  63.             $data $datatables->get('search');
  64.             
  65.             switch($request->get('order')[0]['column']){
  66.                 case 0$order 'proceso.id'; break;
  67.                 case 1$order 'proceso.ProCodigo'; break;
  68.                 case 2$order 'proceso.ProCountFases'; break;
  69.                 case 3$order 'proceso.ProTipo'; break;
  70.                 case 4$order 'proceso.ProCountFases'; break;
  71.                 case 5$order 'proceso.ProEnabled'; break;
  72.             }
  73.             $limit      = ($datatables->get('length') == '-1' 9999999999 $datatables->get('length') );
  74.             $page       = ($datatables->get('start') / $limit  1);
  75.             $results    $this->repo->getList($search$page$limit$order,  $orders);
  76.             
  77.             if($results){
  78.                 $semafor true;
  79.                 $data $this->serializer->normalize($results['results'], null, ['groups' => 'lista']);
  80.             }
  81.             $object = array(
  82.                 "draw"              => $datatables->get('draw'),
  83.                 "recordsTotal"      => $results['count'],
  84.                 "recordsFiltered"   => $results['count'],
  85.                 'data'              => $data,
  86.                 'valid'             => $semafor
  87.             );
  88.         }
  89.         return new Response($this->serializer->serialize($object"json"), ($semafor ?  Response::HTTP_OK :  Response::HTTP_BAD_REQUEST));
  90.     }
  91. }