src/Controller/HistoricoController.php line 109

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: carlosmb
  5.  * Date: 14/11/2018
  6.  * Time: 10:12
  7.  */
  8. namespace App\Controller;
  9. use App\Entity\Historico;
  10. use App\Form\HistoricoType;
  11. use App\Repository\ComponenteRepository;
  12. use App\Service\ColorService;
  13. use App\Service\ComponenteService;
  14. use App\Service\FormulaService;
  15. use App\Service\UsuarioService;
  16. use FOS\RestBundle\Controller\AbstractFOSRestController;
  17. use FOS\RestBundle\Controller\Annotations as Rest;
  18. use JMS\Serializer\SerializationContext;
  19. use App\Service\HistoricoService;
  20. use phpDocumentor\Reflection\DocBlock\Serializer;
  21. use Symfony\Component\HttpFoundation\Request;
  22. use Symfony\Component\HttpFoundation\Response;
  23. use JMS\Serializer\SerializerBuilder;
  24. use Monolog\Logger;
  25. use Monolog\Handler\StreamHandler;
  26. class HistoricoController extends AbstractFOSRestController
  27. {
  28.    private $serviceHistorico;
  29.    private $serviceFomula;
  30.    private $serviceComponent;
  31.    private $serviceColor;
  32.    private $serviceUsuario;
  33.    public function __construct(HistoricoService $service,
  34.                                FormulaService $serviceFormula,
  35.                                ComponenteService $serviceComponent,
  36.                                ColorService $serviceColor,
  37.                                 UsuarioService $serviceUsuario
  38.                                 )
  39.     {
  40.         $this->serviceHistorico $service;
  41.         $this->serviceFomula $serviceFormula;
  42.         $this->serviceComponent $serviceComponent;
  43.         $this->serviceColor $serviceColor;
  44.         $this-> serviceUsuario $serviceUsuario;
  45.     }
  46.     /**
  47.      * Devuelve los datos del histórico de las pesadas.
  48.      * @Rest\Post("api/obtenerHistorico", name="obtener_historico" )
  49.      * @return $response;
  50.      */
  51.     public function obtenerHistorico(Request $request)
  52.     {
  53.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  54.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  55.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  56.             )
  57.         )->build();
  58.         foreach ($request->request->keys() as $key)
  59.             $request->request->filter($key);
  60.         if(sizeof($request->request->keys()) == 0)
  61.             $data $this->serviceHistorico->obtenerHistorico();
  62.         else
  63.             $data $this->serviceHistorico->obtenerHistoricoFiltrado($request->request);
  64.         $serializacion SerializationContext::create()->setGroups(['listado']);
  65.         $response = new Response$serializer->serialize($data,'json',$serializacion),Response::HTTP_OK);
  66.         return $response;
  67.     }
  68.     /**
  69.      * Devuelve un objeto con todos los datos de una pesada almacenados en la tabla histórico
  70.      * @Rest\Get("api/obtenerDetalleHistorico", name="obtener_deetalle_historico" )
  71.      * @param id [int] id unico de la lína del histórico a mostrar
  72.      * @return  Historico [obj] objeto de los datos del historico
  73.      */
  74.     public function obtenerDetalleHistorico(Request $request)
  75.     {
  76.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  77.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  78.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  79.             )
  80.         )->build();
  81.         $serializacion SerializationContext::create()->setGroups(['detalle','formula_group']);
  82.         $id $request->get('id');
  83.         if($id != null)
  84.             $data $this->serviceHistorico->obtenerDetalleHistorico($id);
  85.         else
  86.             $data null;
  87.         //dd($data);
  88.         $response = new Response$serializer->serialize($data,'json',$serializacion),Response::HTTP_OK);
  89.         return $response;
  90.     }
  91.     /**
  92.      * @Rest\Post("api/guardarHistorico", name = "guardar_historico")
  93.      * Recibe los datos de una pesada y los almacena en el histórico,
  94.      * Siempre y cuando los datos estén correctos.
  95.      */
  96.     public function guardarHistorico(Request $request)
  97.     {
  98.         $usr $this->get('security.token_storage')->getToken()->getUser();
  99.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  100.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  101.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  102.             )
  103.         )->build();
  104.         $idnull;
  105.         if (=== strpos($request->headers->get('Content-Type'), 'application/json')) {
  106.             $objectos json_decode($request->getContent(), true);
  107.             $objectos['userId']=$usr ->getId();
  108.             $id$this->serviceHistorico->guardarHistorico($objectos);
  109.         }
  110.         $response =  new Response($serializer->serialize($id ->getId(), 'json'),Response::HTTP_OK);
  111.         $response->headers->set('Content-Type''json');
  112.         $response->prepare($request);
  113.         return $response;
  114.     }
  115.     /**
  116.      * @Rest\Post("api/actualizarHistorico", name = "actualizar_historico")
  117.      * Actualiza SOLO dos parámetros del histórico; el proyecto al que está vinculado la pesada
  118.      *     y el número de orden de la misnma
  119.      */
  120.     public function actualizarHistorico(Request $request): Response
  121.     {
  122.         $usr $this->get('security.token_storage')->getToken()->getUser();
  123.         $idnull;
  124.         if (=== strpos($request->headers->get('Content-Type'), 'application/json')) {
  125.             $objectos json_decode($request->getContent(), true);
  126.             //dd($objectos);
  127.             if( $this->serviceHistorico->actualizaHistorico($objectos$usr)){
  128.                 $response =  new Response(Response::HTTP_OK);
  129.                 $response->headers->set('Content-Type''json');
  130.                 $response->prepare($request);
  131.             }else{
  132.                 $response =  new Response(Response::HTTP_BAD_REQUEST);
  133.                 $response->headers->set('Content-Type''json');
  134.                 $response->prepare($request);
  135.             }
  136.             return $response;
  137.         }
  138.         //return new Response("actuaclización correcta", Response::HTTP_OK);
  139.     }
  140.     /**
  141.      * @Rest\Post("api/historico/gestionOrden", name = "gestiona_orden")
  142.      * Siempre y cuando los datos estén correctos.
  143.      */
  144.     public function actualizaOrden(Request $request){
  145.         try{
  146.             if (=== strpos($request->headers->get('Content-Type'), 'application/json')) {
  147.                 $cuenta $this->get('security.token_storage')->getToken()->getUser();
  148.                 $objectos json_decode($request->getContent(), true);
  149.                 $data $this->serviceHistorico->actualizaOrden($objectos,$cuenta);
  150.                 if($data==0){
  151.                     //existe una orden con el mismo nombre
  152.                     return new Response(0Response::HTTP_CONFLICT);
  153.                 }
  154.                 //Devuelve
  155.                 //Context visitingStack not working well
  156.                 $response = new Response($data,Response::HTTP_OK);
  157.                 return $response;
  158.             }else{
  159.                 return new Response('KO'Response::HTTP_BAD_REQUEST);
  160.             }
  161.         }catch (\Exception $e){
  162.             return new Response($e->getMessage(), Response::HTTP_BAD_REQUEST);
  163.         }
  164.         return new Response('KO-Finall'Response::HTTP_BAD_REQUEST);
  165.     }
  166.     /**
  167.      * @Rest\Get("api/historico/numeroOrden", name="obtener_numero_orden")
  168.      *
  169.      */
  170.     public function getNumeroOrden()
  171.     {
  172.         try{
  173.             $cuenta $this->get('security.token_storage')->getToken()->getUser();
  174.             return new Response($this->serviceHistorico->getNumeroOrden($cuenta), Response::HTTP_OK);
  175.         }catch (\Exception $e){
  176.             $this->log->error($e->getMessage());
  177.             return new Response('KO'Response::HTTP_BAD_REQUEST);
  178.         }
  179.     }
  180.     /**
  181.      * @Rest\Get("api/orden", name = "buscarOrden")
  182.      * Buca las ordenes y los proyectos asignados a una cuenta
  183.      */
  184.     public function buscaOrden(Request $request): Response
  185.     {
  186.         $usr $this->get('security.token_storage')->getToken()->getUser();
  187.         $sOrden $request ->query ->get('orden');
  188.         $idnull;
  189.         $response =  new Response(Response::HTTP_BAD_REQUEST);
  190.         $response->headers->set('Content-Type''json');
  191.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  192.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  193.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  194.             )
  195.         )->build();
  196.         //dd($sOrden);
  197.         if(isset($sOrden) && $sOrden !=""){
  198.             $data =  $this->serviceHistorico->findOrden($sOrden$usr);
  199.             //dd($data);
  200.                $serializacion SerializationContext::create()->setGroups(['listado']);
  201.                 $response =  new Response($serializer->serialize($data,'json',$serializacion),Response::HTTP_OK);
  202.                 $response->headers->set('Content-Type''json');
  203.                 $response->prepare($request);
  204.             
  205.         }
  206.         return $response;
  207.     }
  208.     /**
  209.      * @Rest\Get("api/cliente", name = "buscarCliente")
  210.      * Buca las cliente y los proyectos asignados a una cuenta
  211.      */
  212.     public function buscaCliente(Request $request): Response
  213.     {
  214.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  215.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  216.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  217.             )
  218.         )->build();
  219.         $usr $this->get('security.token_storage')->getToken()->getUser();
  220.         $sCliente="";
  221.         if($request ->query ->get('cliente')) {
  222.             $sCliente $request ->query ->get('cliente');
  223.         }
  224.         $response =  new Response(Response::HTTP_BAD_REQUEST);
  225.         $response->headers->set('Content-Type''json');
  226.         $data =  $this->serviceHistorico->findCliente($sCliente$usr);
  227.         if(sizeof($data)>0){
  228.             $serializacion SerializationContext::create()->setGroups(array('listado'));
  229.             $response =  new Response($serializer->serialize(
  230.                 $data,'json'$serializacion),Response::HTTP_OK);
  231.             $response->headers->set('Content-Type''json');
  232.             $response->prepare($request);
  233.         }else{
  234.             $response =  new Response($serializer->serialize([],'json'),Response::HTTP_OK);
  235.             $response->headers->set('Content-Type''json');
  236.             $response->prepare($request);
  237.         }
  238.         return $response;
  239.     }
  240.     /*
  241.      *          PETICIONES DE ESTADISTICAS
  242.      */
  243.     /**
  244.      * @Rest\Get("api/obtenerEstadisticas", name="obtener_estadisticas_Cliente" )
  245.      * @return  Historico [obj] objeto de los datos del historico
  246.      */
  247.     public function obtenerEstadisticasHistoricosCliente(Request $request){
  248.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  249.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  250.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  251.             )
  252.         )->build();
  253.         $usr $this->get('security.token_storage')->getToken()->getUser();
  254.         $fecha1 = new \DateTime('2019-01-01');
  255.         $fecha2 = new \DateTime();
  256.         if($request ->query ->get('fechaIni')!=null && $request ->query ->get('fechaIni')!=""){
  257.             $fecha1 = new \DateTime($request ->query ->get('fechaIni'));
  258.         }
  259.         if($request ->query ->get('fechaFin')!=null && $request ->query ->get('fechaFin')!=""){
  260.             $fecha2 = new \DateTime($request ->query ->get('fechaFin'));
  261.         }
  262.         //dd($usr->getCuenta());
  263.         try{
  264.             $data=$this->serviceHistorico->findEstadisticas($usr->getId(),$fecha1$fecha2);
  265.         }catch (\Exception $e){
  266.             dd($e);
  267.         }
  268.         //dd($data);
  269.         if($data) {
  270.             $response = new Response($serializer->serialize($data,'json'), Response::HTTP_OK);
  271.         }else{
  272.             $response = new Response("KO",Response::HTTP_NO_CONTENT);
  273.         }
  274.         $response->headers->set('Content-Type''json');
  275.         return $response;
  276.     }
  277.     /**
  278.      * @Rest\Get("api/admin/obtenerEstadisticas", name="obtener_estadisticas" )
  279.      * @Rest\Get("extra/admin/obtenerEstadisticas", name="obtener_estadisticas1" )
  280.      * @return  Historico [obj] objeto de los datos del historico
  281.      */
  282.     public function obtenerEstadisticasHistoricos(Request $request){
  283.         $serializer SerializerBuilder::create()->setPropertyNamingStrategy(
  284.             new \JMS\Serializer\Naming\SerializedNameAnnotationStrategy(
  285.                 new \JMS\Serializer\Naming\IdenticalPropertyNamingStrategy()
  286.             )
  287.         )->build();        $id=1;
  288.         if($request ->query ->get('idCuenta')!=null && $request ->query ->get('idCuenta')!="" && $request ->query ->get('idCuenta')!="null"){
  289.             $id =    $request ->query ->get('idCuenta');
  290.         }
  291.         $cuenta $this->serviceUsuario->findCuentabyId($id);
  292.         $fecha1 = new \DateTime('2018-12-10');
  293.         $fecha2 = new \DateTime('2018-12-31');
  294.         if($request ->query ->get('tipo')!=null && $request ->query ->get('tipo')!="" ){
  295.             $tipo =    $request ->query ->get('tipo');
  296.             $fecha2 = new \DateTime();
  297.             switch ($tipo){
  298.                 case "1":
  299.                     //$fecha1 = new \DateTime(date('Y-m-d', strtotime(date_format(new \DateTime(), 'Y-m-d H:i:s')) - 86400));
  300.                     $fecha1 = new \DateTime(date('Y-m-d'strtotime("-2 day")));
  301.                 break;
  302.                 case "2":
  303.                     //$fecha1 = new \DateTime(date('Y-m-d', strtotime(date_format(new \DateTime(), 'Y-m-d H:i:s')) - (7*86400)));
  304.                     $fecha1 = new \DateTime(date('Y-m-d'strtotime("-7 day")));
  305.                     break;
  306.                 case "3":
  307.                     //$fecha1 = new \DateTime(date('Y-m-d', strtotime(date_format(new \DateTime(), 'Y-m-d H:i:s')) - (30*86400)));
  308.                     $fecha1 = new \DateTime(date('Y-m-d'strtotime("-30 day")));
  309.                     break;
  310.                 case "4":
  311.                     if( (new \DateTime(date('Y-m-d'strtotime("-1 year")))) > $cuenta->getFechaCreacion()){
  312.                         $fecha1 = new \DateTime(date('Y-m-d'strtotime("-1 year")));
  313.                     }else{
  314.                         $fecha1 $cuenta->getFechaCreacion();
  315.                     }
  316.                     break;
  317.                 default:
  318.                     $fecha1 = new \DateTime(date('Y-m-d'strtotime("-1 year")));
  319.                     break;
  320.             }
  321.         }
  322.         //$data=$this->serviceHistorico->findEstadisticas($id,$tipo)->getEstadistica();
  323.         //dd($id);
  324.         $data=$this->serviceHistorico->findEstadisticas($id,$fecha1$fecha2);
  325.         //dd($data);
  326.         if($data) {
  327.             //dd($data);
  328.             $response = new Response($serializer->serialize($data,'json'), Response::HTTP_OK);
  329.         }else{
  330.             $response = new Response("",Response::HTTP_NO_CONTENT);
  331.         }
  332.         $response->headers->set('Content-Type''json');
  333.         return $response;
  334.     }
  335.     /**
  336.      * @Rest\Get("extra/generarEstadistcas", name="genera_estadisticas" )
  337.      * @return  void
  338.      */
  339.     public function generaEstadisticaEstadisticasHistoricos(Request $request){
  340.         $serializer $this->serializer;
  341.         $fechaLog="estadistica".date_format(new \DateTime(), 'Ymd_His');;
  342.         $log = new Logger($fechaLog);
  343.         $log->pushHandler(new StreamHandler($fechaLogLogger::WARNING));
  344.         if($request ->query ->get('key')!=null && $request ->query ->get('key')!=""){
  345.             if($request ->query ->get('key')
  346.                 == 'yBBTbaHO17cvhle98GCEXIsideCLNIAcGY7LwmQcHBzseLWKiEj88je2a0Sr0iC0dapZRBk3i4pqaYc931RZUApntdJK1v1fn4umOXws1iEAH5IhTSnEmu1Ua950eyXY3LC2Ue5u8NtqLF159QonJkwovpT5e8wNdABXEQZBLpJ10c6q89RUgODBs5LsKHhwhbcR8kmFC0PblbC8kpKQrSq154mnHFqHtKrsKMO1TeUpGfZI4FdRElwTIR3ZO6h5'
  347.             ){
  348.                 $elemento$this->serviceHistorico->generarEstadisticas();
  349.                 $log->warning(json_encode($elemento));
  350.                 $response =  new Response(Response::HTTP_OK);
  351.                 return $response;
  352.             }else{
  353.                 $response =  new Response(Response::HTTP_BAD_REQUEST);
  354.                 return $response;
  355.             }
  356.         }else{
  357.             $response =  new Response(Response::HTTP_BAD_REQUEST);
  358.             return $response;
  359.         }
  360.     }
  361. }