src/Controller/PatrimonioController.php line 42

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Patrimonio;
  4. use App\Form\PatrimonioType;
  5. use App\Repository\PatrimonioRepository;
  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 Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  11. #[Route('/patrimonio')]
  12. class PatrimonioController extends AbstractController
  13. {
  14.     
  15.     /**
  16.      * @IsGranted("ROLE_ADMIN")
  17.      */       
  18.     #[Route('/'name'app_patrimonio_index'methods: ['GET'])]
  19.     public function index(PatrimonioRepository $patrimonioRepository,Request $request): Response
  20.     {
  21.         $filter['tipo'] = $request->get('tipo') ?: '';
  22.         $filter['descricao'] = $request->get('descricao') ?: '';
  23.         $filter['pagina'] = $request->get('pagina') ?: 1;
  24.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  25.         $filter['primeira'] = 1;
  26.         $filter['total_registros'] = $patrimonioRepository->filterGridTotal($filter);
  27.         $filter['page'] = $request->get('page') ?: 10;
  28.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  29.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  30.         $filter['dataInicial'] = '';
  31.         $filter['dataFinal'] = '';          
  32.         return $this->render('patrimonio/index.html.twig', [
  33.             'filtro' => $filter,
  34.             'lista' => $patrimonioRepository->filterGrid($filter),
  35.         ]);
  36.     }
  37.     
  38.     #[Route('/publico'name'app_patrimonio_publico'methods: ['GET'])]
  39.     public function publico(PatrimonioRepository $patrimonioRepositoryRequest $request): Response {               
  40.         $filter['tipo'] = $request->get('tipo') ?: '';
  41.         $filter['descricao'] = $request->get('descricao') ?: '';
  42.         $filter['pagina'] = $request->get('pagina') ?: 1;
  43.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  44.         $filter['primeira'] = 1;
  45.         $filter['total_registros'] = $patrimonioRepository->filterGridTotal($filter);
  46.         $filter['page'] = $request->get('page') ?: 10;
  47.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  48.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  49.         $filter['dataInicial'] = '';
  50.         $filter['dataFinal'] = '';  
  51.         
  52.         if ($request->get('impressao')) {
  53.             $filter['page'] = 'all';
  54.             if ($request->get('pdf')) {
  55.                 $html $this->renderView('patrimonio/patrimonio_pdf.html.twig', [
  56.                     'filtro' => $filter,
  57.                     'lista' => $patrimonioRepository->filterGrid($filter),
  58.                 ]);
  59.                 $dompdf = new Dompdf();
  60.                 $dompdf->setPaper('A4''landscape');
  61.                 $dompdf->set_option("isPhpEnabled"true);
  62.                 $options $dompdf->getOptions();
  63.                 $options->setDefaultFont('Courier');
  64.                 $dompdf->setOptions($options);
  65.                 $dompdf->loadHtml($html);
  66.                 $dompdf->render();
  67.                 return new Response(
  68.                         $dompdf->stream('resume', ["Attachment" => false]),
  69.                         Response::HTTP_OK,
  70.                         ['Content-Type' => 'application/pdf']
  71.                         );
  72.             }elseif($request->get('excel')){ 
  73.             $lista =$patrimonioRepository->filterGrid($filter); 
  74.             $titulos = array("Data Aquisição","Origem","Secretaria","Descrição","Patrimônio","Situacao","Localização""Local Enviado","Justificativa","Valor","Proprietário","Número");
  75.                 $rows[] = implode(';'$titulos);
  76.                 
  77.                 foreach ($lista as $value) {
  78.                     $data = array($value->getDataAquisicao()->format("d/m/Y"), $value->getOrigem() , $value->getSecretaria(), $value->getDescricao(),$value->getPatrimonio(),$value->getSituacao(),$value->getSituacao(), $value->getLocalEnviado(),$value->getJustificativa(),$value->getValor(),$value->getProprietario(),$value->getNumero());
  79.                     $rows[] = implode(';'$data);
  80.                 }    
  81.                 
  82.                 $content implode("\n"$rows);
  83.                 $response = new Response($content);
  84.                 $response->headers->set('Content-Type''text/csv');
  85.                 return $response;
  86.             }else{
  87.                 return $this->render('patrimonio/impressao.html.twig', [
  88.                             'filtro' => $filter,
  89.                             'lista' => $patrimonioRepository->filterGrid($filter),
  90.                 ]);
  91.             }
  92.         }
  93.         
  94.         return $this->render('patrimonio/patrimonio.html.twig', [
  95.                     'filtro' => $filter,
  96.                     'lista' => $patrimonioRepository->filterGrid($filter),
  97.         ]);
  98.     }    
  99.     
  100.     
  101.     /**
  102.      * @IsGranted("ROLE_ADMIN")
  103.      */   
  104.     #[Route('/new'name'app_patrimonio_new'methods: ['GET''POST'])]
  105.     public function new(Request $requestPatrimonioRepository $patrimonioRepository): Response
  106.     {
  107.         $patrimonio = new Patrimonio();
  108.         $form $this->createForm(PatrimonioType::class, $patrimonio);
  109.         $form->handleRequest($request);
  110.         if ($form->isSubmitted() && $form->isValid()) {
  111.             $patrimonioRepository->save($patrimoniotrue);
  112.             return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
  113.         }
  114.         return $this->renderForm('patrimonio/new.html.twig', [
  115.             'patrimonio' => $patrimonio,
  116.             'form' => $form,
  117.         ]);
  118.     }
  119.     
  120.     /**
  121.      * @IsGranted("ROLE_ADMIN")
  122.      */   
  123.     #[Route('/{id}/edit'name'app_patrimonio_edit'methods: ['GET''POST'])]
  124.     public function edit(Request $requestPatrimonio $patrimonioPatrimonioRepository $patrimonioRepository): Response
  125.     {
  126.         $form $this->createForm(PatrimonioType::class, $patrimonio);
  127.         $form->handleRequest($request);
  128.         if ($form->isSubmitted() && $form->isValid()) {
  129.             $patrimonioRepository->save($patrimoniotrue);
  130.             return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
  131.         }
  132.         return $this->renderForm('patrimonio/edit.html.twig', [
  133.             'patrimonio' => $patrimonio,
  134.             'form' => $form,
  135.         ]);
  136.     }
  137.     
  138.     /**
  139.      * @IsGranted("ROLE_ADMIN")
  140.      */   
  141.     #[Route('/{id}'name'app_patrimonio_delete'methods: ['POST'])]
  142.     public function delete(Request $requestPatrimonio $patrimonioPatrimonioRepository $patrimonioRepository): Response
  143.     {
  144.         if ($this->isCsrfTokenValid('delete'.$patrimonio->getId(), $request->request->get('_token'))) {
  145.             $patrimonioRepository->remove($patrimoniotrue);
  146.         }
  147.         return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
  148.     }
  149.       
  150.     /**
  151.      * @IsGranted("ROLE_ADMIN")
  152.      */     
  153.     #[Route('/importar/dados'name'app_patrimonio_inport'methods: ['POST'])]
  154.     public function import(Request $requestPatrimonioRepository $patrimonioRepository): Response {
  155.         //$ano = $request->get('ano');
  156.         $ultimoId $patrimonioRepository->getUltimoId() ;
  157.         if($ultimoId == null){
  158.             $ultimoId 0;
  159.         }else{
  160.             $ultimoId $ultimoId[0]['codigo'];
  161.         }
  162.             $contador 0;    
  163.             $url "http://143.255.241.145:8000/api/patrimonies?institution=1";                                
  164.             $ch curl_init();
  165.             curl_setopt($chCURLOPT_URL$url);
  166.             curl_setopt($chCURLOPT_RETURNTRANSFER1);
  167.             $lista json_decode(curl_exec($ch), true);
  168.             curl_close($ch);             
  169.             if (is_array($lista)) { 
  170.                 foreach ($lista as $item) {   
  171.                     if($item['id'] > $ultimoId){
  172.                         $contador++;
  173.                         $patrimonio = new Patrimonio();
  174.                         $patrimonio->setCodigo($item['id']);
  175.                         $patrimonio->setDataAquisicao(date_create($item['data_aquisicao']));
  176.                         $patrimonio->setDescricao($item['descricao']);
  177.                         $patrimonio->setRegistro($item['registro']);
  178.                         $patrimonio->setJustificativa($item['justificativa']);
  179.                         $patrimonio->setLocalEnviado($item['local_envio']);                    
  180.                         $patrimonio->setLocalizacao($item["localizacao"]);
  181.                         $patrimonio->setNumero($item["numero"]);
  182.                         $patrimonio->setOrigem($item["origem"]);
  183.                         $patrimonio->setPatrimonio($item["patrimonio"]);
  184.                         $patrimonio->setProprietario($item["proprietario"]);
  185.                         $patrimonio->setSecretaria($item["secretaria"]);
  186.                         $patrimonio->setSituacao($item["situacao"]);
  187.                         $patrimonio->setValor($item["valor"]);
  188.                         $patrimonioRepository->save($patrimoniofalse);
  189.                     }
  190.                 }
  191.             }
  192.             
  193.         $patrimonioRepository->flush();
  194.                 
  195.         if($contador == 0){
  196.             $this->addFlash('warning'"NENHUM REGISTRO FOI IMPORTADO.");
  197.         }else{
  198.             $this->addFlash('success'$contador " REGISTROS FORAM IMPORTADOS COM SUCESSO.");            
  199.         }
  200.         return $this->redirectToRoute('app_patrimonio_index', [], Response::HTTP_SEE_OTHER);
  201.     }
  202.     
  203.     
  204.     private function verifica($str$pagina$page null) {
  205.         if ($str == "anterior") {
  206.             if ($pagina 1) {
  207.                 return 1;
  208.             }
  209.         }
  210.         if ($str == "proxima") {
  211.             if ($pagina $page) {
  212.                 return $page;
  213.             }
  214.             return $pagina;
  215.         }
  216.         if ($str == "ultima") {
  217.             if($page == "all"){
  218.                 $page $pagina;
  219.             }
  220.             $valor intdiv($pagina$page);
  221.             if (($pagina $page) > 0) {
  222.                 return ++$valor;
  223.             } else {
  224.                 return $valor;
  225.             }
  226.         }
  227.     }     
  228.     
  229. }