get('logger'); $em = $this->getDoctrine()->getManager(); $data = $request->getContent(); $session = $request->getSession(); $session->start(); $chavecrip = '123456'; $usuario = $this->get('security.context')->getToken()->getUser(); $logger->debug("Usuario encontrado: ".$usuario->getUserName()); $auth = new JsonResponse(); $auth->setContent(json_encode(array( 'session' => $session->getId(), 'chavecrip' => $usuario->getApiKey() ))); return $auth; } /** * @param $ip_addr * @Route("/printer/{ip_addr}", name="printer_counter_update") * @Method("POST") */ public function printerAction($ip_addr, Request $request) { $em = $this->getDoctrine()->getManager(); $logger = $this->get('logger'); $status = $request->getContent(); $dados = json_decode($status, true); if (empty($dados)) { $logger->error("JSON INVÁLIDO!!!!!!!!!!!!!!!!!!! Erro no envio das informações da impressora $ip_addr"); // Retorna erro se o JSON for inválido $error_msg = '{ "message": "JSON Inválido", "codigo": 1 }'; $response = new JsonResponse(); $response->setStatusCode('500'); $response->setContent($error_msg); return $response; } $logger->debug("Atualizando informações para a impressora com IP = $ip_addr\n".$status); $printer = $em->getRepository('CocarBundle:Printer')->findOneBy(array('host' => $ip_addr)); if (empty($printer)) { $logger->error("COLETA: Impressora não cadastrada: $ip_addr. Inserindo...."); // Insere impressora que não estiver cadastrada $printer = new Printer(); // FIXME: Deve ser retornado pelo Cocar $data = new \DateTime(); $printer->setCommunitySnmpPrinter('public'); $printer->setHost($ip_addr); $printer->setDescription('Impressora detectada automaticamente em '.$data->format('d/m/Y')); $printer->setName("Impressora $ip_addr"); } $counter = $this->getDoctrine()->getManager()->getRepository('CocarBundle:PrinterCounter')->findBy(array( 'printer' => $printer->getId(), 'date' => $dados['counter_time'] )); if(empty($counter)) { $counter = new PrinterCounter; } else { $this->get('logger')->error("Entrada repetida para impressora". $printer->getId() ." e data ".$dados['counter_time']); $response = new JsonResponse(); $response->setStatusCode('200'); return $response; } // Atualiza impressora sempre que alterar o serial if (!empty($dados['model'])) { $printer->setName($dados['model']); } if (!empty($dados['serial'])) { $printer->setSerie($dados['serial']); } if (!empty($dados['description'])) { $printer->setDescription($dados['description']); } // Grava o contador $counter->setPrinter($printer); $counter->setPrints($dados['counter']); $counter->setDate($dados['counter_time']); $em->persist($printer); $em->persist($counter); $em->flush(); $response = new JsonResponse(); $response->setStatusCode('200'); return $response; } /** * @Route("/printer", name="printer_list") * @Method("GET") */ public function printerListAction(Request $request) { $em = $this->getDoctrine()->getManager(); $logger = $this->get('logger'); $printer = $em->getRepository('CocarBundle:Printer')->findAll(); $teste = array(); foreach($printer as $elm) { $saida = array( 'network_ip' => $elm->getHost(), 'community' => $elm->getCommunitySnmpPrinter() ); array_push($teste, $saida); } $dados = json_encode(array( 'printers'=> $teste ), true); $logger->debug("Enviando lista de impressoras \n".$dados); $response = new JsonResponse(); $response->setStatusCode('200'); $response->setContent($dados); return $response; } }