src/Controller/ProductoController.php line 237

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Producto;
  4. use App\Form\ProductoType;
  5. use App\Repository\ProductoRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\Security\Core\Security;
  11. use Knp\Component\Pager\PaginatorInterface;
  12. use App\Entity\MovimientosProductos;
  13. use App\Service\MidasApiService;
  14. use App\Repository\EmpresaRepository;
  15. use App\Repository\EspecialidadRepository;
  16. use App\Repository\ProductoMidasRepository;
  17. /**
  18.  * @Route("/producto")
  19.  */
  20. class ProductoController extends AbstractController
  21. {
  22.     /**
  23.      * @var Security
  24.      */
  25.     private $security;
  26.     public function __construct(Security $security)
  27.     {
  28.        date_default_timezone_set("America/Guayaquil");
  29.        $this->security $security;
  30.     }
  31.     /**
  32.      * @Route("/", name="producto_index", methods={"GET"})
  33.      */
  34.     public function index(ProductoRepository $productoRepositoryPaginatorInterface $paginatorRequest $request): Response
  35.     {
  36.         $query $productoRepository->QryBuscarTodos();
  37.         $paginacion $paginator->paginate(
  38.             $query,
  39.             $request->query->getInt('page',1),
  40.             20 
  41.         );
  42.         return $this->render('producto/index.html.twig', [
  43.             'pagination' => $paginacion,
  44.         ]);
  45.         /*
  46.         return $this->render('producto/index.html.twig', [
  47.             'productos' => $productoRepository->findAll(),
  48.         ]);*/
  49.     }
  50.     /**
  51.      * @Route("/new", name="producto_new", methods={"GET","POST"})
  52.      */
  53.     public function new(Request $request): Response
  54.     {
  55.         $ip     $request->getClientIp();
  56.         $user   $this->security->getUser();
  57.         $producto = new Producto();
  58.         $form $this->createForm(ProductoType::class, $producto);
  59.         $form->handleRequest($request);
  60.         if ($form->isSubmitted() && $form->isValid()) {
  61.             $entityManager $this->getDoctrine()->getManager();
  62.             $producto->setEstado('1');
  63.             $producto->setIpCrea($ip);
  64.             $producto->setIpModifica($ip);
  65.             $producto->setUserCrea($user->getId());
  66.             $producto->setUserModifica($user->getId());
  67.             $entityManager->persist($producto);
  68.             $entityManager->flush();
  69.             return $this->redirectToRoute('producto_index');
  70.         }
  71.         return $this->render('producto/new.html.twig', [
  72.             'producto' => $producto,
  73.             'form' => $form->createView(),
  74.         ]);
  75.     }
  76.     /**
  77.      * @Route("/{id}", name="producto_show", methods={"GET"})
  78.      */
  79.     public function show(Producto $producto): Response
  80.     {
  81.         return $this->render('producto/show.html.twig', [
  82.             'producto' => $producto,
  83.         ]);
  84.     }
  85.     /**
  86.      * @Route("/{id}/edit", name="producto_edit", methods={"GET","POST"})
  87.      */
  88.     public function edit(Request $requestProducto $producto): Response
  89.     {
  90.         $form $this->createForm(ProductoType::class, $producto);
  91.         $form->handleRequest($request);
  92.         if ($form->isSubmitted() && $form->isValid()) {
  93.             $this->getDoctrine()->getManager()->flush();
  94.             return $this->redirectToRoute('producto_index');
  95.         }
  96.         return $this->render('producto/edit.html.twig', [
  97.             'producto' => $producto,
  98.             'form' => $form->createView(),
  99.         ]);
  100.     }
  101.     /**
  102.      * @Route("/{id}", name="producto_delete", methods={"DELETE"})
  103.      */
  104.     public function delete(Request $requestProducto $producto): Response
  105.     {
  106.         if ($this->isCsrfTokenValid('delete'.$producto->getId(), $request->request->get('_token'))) {
  107.             $entityManager $this->getDoctrine()->getManager();
  108.             $entityManager->remove($producto);
  109.             $entityManager->flush();
  110.         }
  111.         return $this->redirectToRoute('producto_index');
  112.     }
  113.     /**
  114.      * @Route("/buscar/producto/descripcion", name="producto_buscar_descripcion", methods={"GET"})
  115.      */
  116.     public function buscar_producto_descripcion(Request $requestProductoRepository $productoRepository): Response
  117.     {
  118.         $query $request->query->get('query');
  119.         $unidad $request->query->get('unidad');
  120.         //dd($request->query); 
  121.         $productos $productoRepository->findByNombre($query);//dd($productos);
  122.         //$arr = $productoRepository->findByNombre_ok($query, $unidad);
  123.     
  124.         $arr = [];$i=0;
  125.         foreach ($productos as $value) {
  126.             $arr[$i]=[ "value"=> $value->getNombre(), "data"=> $value->getCodigo(), "id" => $value->getId(), "cantidad" => $value->getCantidad(), "iva" => $value->getIva(), "precio" => $value->getPrecio() ];
  127.             $i++;
  128.         }
  129.         //dd($arr,$x);
  130.         return $this->json([
  131.             // Query is not required as of version 1.2.5
  132.             "query"=> "Unit",
  133.             "suggestions"=> $arr,
  134.         ]);
  135.     }
  136.     
  137.     /**
  138.      * @Route("/movimiento_producto/agregar/{id}/{cantidad}", name="producto_movimiento_producto_agregar", methods={"GET"})
  139.      */
  140.     public function movimiento_producto_agregar(Request $requestProducto $producto$cantidadProductoRepository $productoRepository): Response
  141.     {
  142.         $ip     $request->getClientIp();
  143.         $user   $this->security->getUser();
  144.         $movimientosProducto = new MovimientosProductos();
  145.         $movimientosProducto->setCantidad($cantidad);
  146.         $movimientosProducto->setIpCrea($ip);
  147.         $movimientosProducto->setIpModifica($ip);
  148.         $movimientosProducto->setUserCrea($user->getId());
  149.         $movimientosProducto->setUserModifica($user->getId());
  150.         $movimientosProducto->setProducto($producto);
  151.         $entityManager $this->getDoctrine()->getManager();
  152.         $entityManager->persist($movimientosProducto);
  153.         $entityManager->flush();
  154.         $producto $productoRepository->find($producto->getId());
  155.         $total $producto->getTotalSum();
  156.             
  157.         return $this->json([
  158.             'result' => $total,
  159.         ]);
  160.     }
  161.     /**
  162.      * @Route("/movimiento_producto/quitar/{id}/{cantidad}", name="producto_movimiento_producto_quitar", methods={"GET"})
  163.      */
  164.     public function movimiento_producto_quitar(Request $requestProducto $producto$cantidadProductoRepository $productoRepository): Response
  165.     {
  166.         $ip     $request->getClientIp();
  167.         $user   $this->security->getUser();
  168.         $movimientosProducto = new MovimientosProductos();
  169.         $movimientosProducto->setCantidad(- $cantidad);
  170.         $movimientosProducto->setIpCrea($ip);
  171.         $movimientosProducto->setIpModifica($ip);
  172.         $movimientosProducto->setUserCrea($user->getId());
  173.         $movimientosProducto->setUserModifica($user->getId());
  174.         $movimientosProducto->setProducto($producto);
  175.         $entityManager $this->getDoctrine()->getManager();
  176.         $entityManager->persist($movimientosProducto);
  177.         $entityManager->flush();
  178.         $producto $productoRepository->find($producto->getId());
  179.         $total $producto->getTotalSum();
  180.             
  181.         return $this->json([
  182.             'result' => $total,
  183.         ]);
  184.     }
  185.     /**
  186.      * @Route("/midas/actualizar", name="producto_midas_actualizar", methods={"GET"})
  187.      */
  188.     public function midas_actualizar(Request $requestProductoRepository $productoRepositoryEmpresaRepository $empresaRepositoryMidasApiService $midasApiServiceEspecialidadRepository $especialidadRepositoryProductoMidasRepository $productoMidasRepository): Response
  189.     {
  190.         $e $empresaRepository->findOneBy(['id_api' => "95"]);
  191.         $token $e->getToken();
  192.         $data = [
  193.             "company_id" => 95
  194.         ];
  195.         
  196.         $result $midasApiService->solicitarProductos$token$productoRepository$data"95"$especialidadRepository$e->getNombreCorto(), $productoMidasRepository );
  197.         
  198.         $e $empresaRepository->findOneBy(['id_api' => "96"]);
  199.         $token $e->getToken();
  200.         $data = [
  201.             "company_id" => 96
  202.         ];
  203.         
  204.         $result $midasApiService->solicitarProductos$token$productoRepository$data"96"$especialidadRepository$e->getNombreCorto(), $productoMidasRepository  );
  205.           
  206.         return $this->json([
  207.             'result' => "ok",
  208.         ]);
  209.     }
  210.     /**
  211.      * @Route("/midas/existencias/{codigo}", name="producto_midas_existencias", methods={"GET"})
  212.      */
  213.     public function midas_existencias(Request $requestProductoRepository $productoRepositoryEmpresaRepository $empresaRepositoryMidasApiService $midasApiService$codigo): Response
  214.     {
  215.         $e $empresaRepository->findOneBy(['id_api' => "95"]);
  216.         $token $e->getToken();
  217.         $data = [
  218.             "company_id" => 95
  219.         ];
  220.         
  221.         $result $midasApiService->solicitarExistencia$token$productoRepository$data$codigo );
  222.         
  223.           
  224.         return $this->json([
  225.             'result' => $result,
  226.         ]);
  227.     }
  228.     
  229. }