src/Controller/VeiculoController.php line 52

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Veiculo;
  4. use App\Entity\VeiculoAbastecimento;
  5. use App\Entity\VeiculoManutencao;
  6. use App\Entity\VeiculoMulta;
  7. use App\Entity\VeiculoSaida;
  8. use App\Form\VeiculoType;
  9. use App\Repository\VeiculoRepository;
  10. use App\Repository\VeiculoAbastecimentoRepository;
  11. use App\Repository\VeiculoSaidaRepository;
  12. use App\Repository\VeiculoManutencaoRepository;
  13. use App\Repository\VeiculoMultaRepository;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  19. #[Route('/veiculo')]
  20. class VeiculoController extends AbstractController
  21. {
  22.     
  23.     /**
  24.      * @IsGranted("ROLE_ADMIN")
  25.      */       
  26.     #[Route('/'name'app_veiculo_index'methods: ['GET'])]
  27.     public function index(VeiculoRepository $veiculoRepository,Request $request): Response
  28.     {
  29.         $filter['tipo'] = $request->get('tipo') ?: '';
  30.         $filter['descricao'] = $request->get('descricao') ?: '';
  31.         $filter['pagina'] = $request->get('pagina') ?: 1;
  32.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  33.         $filter['primeira'] = 1;
  34.         $filter['total_registros'] = $veiculoRepository->filterGridTotal($filter);
  35.         $filter['page'] = $request->get('page') ?: 10;
  36.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  37.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  38.         $filter['dataInicial'] = '';
  39.         $filter['dataFinal'] = ''
  40.         
  41.         return $this->render('veiculo/index.html.twig', [
  42.             'veiculos' => $veiculoRepository->filterGrid($filter),
  43.             'filtro' => $filter
  44.         ]);
  45.     }
  46.     
  47.     #[Route('/publico'name'app_veiculo_publico'methods: ['GET'])]
  48.     public function veiculo(VeiculoRepository $veiculoRepositoryRequest $request): Response {
  49.         $filter['tipo'] = $request->get('tipo') ?: '';
  50.         //$filter['tipoTitulo'] = $this->verficaTipo($filter['tipo']);
  51.         $filter['descricao'] = $request->get('descricao') ?: '';
  52.         $filter['dataInicial'] = $request->get('dataInicial') ?: '';
  53.         $filter['dataFinal'] = $request->get('dataFinal') ?: '';
  54.         $filter['pagina'] = $request->get('pagina') ?: 1;
  55.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  56.         $filter['primeira'] = 1;
  57.         $filter['total_registros'] = $veiculoRepository->filterGridTotal($filter);
  58.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'], 10);
  59.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);
  60.         $filter['page'] = $request->get('page') ?: 10;
  61.         if ($request->get('impressao')) {
  62.             $filter['page'] = 'all';
  63.             if($request->get('excel')){ 
  64.             $lista =$veiculoRepository->filterGrid($filter); 
  65.             $titulos = array("Ano","DATA","NOME","MATRICULA","CARGO","DATA INICIAL","DATA FINAL""QTD DIARIA",'DESTINO','TRANSPORTE','VALOR UNIT',"VALOR TOTAL","OBJETIVO");
  66.                 $rows[] = implode(';'$titulos);
  67.                 
  68.                 foreach ($lista as $value) {
  69.                     $data = array($value->getAno(), $value->getData() ? $value->getData()->format('d/m/Y') :null$value->getNome(),$value->getMatricula(),$value->getCargo(),$value->getDataInicial() ? $value->getDataInicial()->format('d/m/Y') :null,$value->getDataFinal() ? $value->getDataFinal()->format('d/m/Y') :null,$value->getQtdDiaria(),$value->getDestino(),$value->getTransporte(),$value->getValorUnit(),$value->getValorTotal(),$value->getObjetivo());
  70.                     $rows[] = implode(';'$data);
  71.                 }    
  72.                 
  73.                 $content implode("\n"$rows);
  74.                 $response = new Response($content);
  75.                 $response->headers->set('Content-Type''text/csv');
  76.                 return $response;
  77.             }else{
  78.                 return $this->render('veiculo/impressao.html.twig', [
  79.                             'filtro' => $filter,
  80.                             'veiculos' => $veiculoRepository->filterGrid($filter),
  81.                 ]);
  82.             }
  83.         }
  84.         return $this->render('veiculo/veiculo.html.twig', [
  85.                     'filtro' => $filter,
  86.                     'veiculos' => $veiculoRepository->filterGrid($filter),
  87.         ]);
  88.     }    
  89.     
  90.     /**
  91.      * @IsGranted("ROLE_ADMIN")
  92.      */   
  93.     #[Route('/new'name'app_veiculo_new'methods: ['GET''POST'])]
  94.     public function new(Request $requestVeiculoRepository $veiculoRepository): Response
  95.     {
  96.         $veiculo = new Veiculo();
  97.         $form $this->createForm(VeiculoType::class, $veiculo);
  98.         $form->handleRequest($request);
  99.         if ($form->isSubmitted() && $form->isValid()) {
  100.             $veiculoRepository->save($veiculotrue);
  101.             return $this->redirectToRoute('app_veiculo_index', [], Response::HTTP_SEE_OTHER);
  102.         }
  103.         return $this->renderForm('veiculo/new.html.twig', [
  104.             'veiculo' => $veiculo,
  105.             'form' => $form,
  106.         ]);
  107.     }
  108.     
  109.     /**
  110.      * @IsGranted("ROLE_ADMIN")
  111.      */   
  112. //    #[Route('/{id}', name: 'app_veiculo_show', methods: ['GET'])]
  113. //    public function show(Veiculo $veiculo): Response
  114. //    {
  115. //        return $this->render('veiculo/show.html.twig', [
  116. //            'veiculo' => $veiculo,
  117. //        ]);
  118. //    }
  119.     
  120.     /**
  121.      * @IsGranted("ROLE_ADMIN")
  122.      */   
  123.     #[Route('/{id}/edit'name'app_veiculo_edit'methods: ['GET''POST'])]
  124.     public function edit(Request $requestVeiculo $veiculoVeiculoRepository $veiculoRepository): Response
  125.     {
  126.             $nav['vei'] = '';
  127.             $nav['mov'] = '';
  128.             $nav['man'] = '';
  129.             $nav['aba'] = '';
  130.             $nav['mul'] = '';        
  131.         if ($request->get('aba')) {
  132.             $nav[$request->get('aba')] = 'show active';        
  133.         }else{
  134.             $nav['vei'] = 'show active';
  135.         }
  136.         
  137.         $form $this->createForm(VeiculoType::class, $veiculo);
  138.         $form->handleRequest($request);
  139.         if ($form->isSubmitted() && $form->isValid()) {
  140.             $veiculoRepository->save($veiculotrue);
  141.             return $this->redirectToRoute('app_veiculo_index', [], Response::HTTP_SEE_OTHER);
  142.         }
  143.         return $this->renderForm('veiculo/edit.html.twig', [
  144.             'veiculo' => $veiculo,
  145.             'form' => $form,
  146.             'nav' => $nav
  147.         ]);
  148.     }
  149.     
  150.     
  151.     /**
  152.      * @IsGranted("ROLE_ADMIN")
  153.      */   
  154.     #[Route('/{id}'name'app_veiculo_delete'methods: ['POST'])]
  155.     public function delete(Request $requestVeiculo $veiculoVeiculoRepository $veiculoRepository): Response
  156.     {
  157.         if ($this->isCsrfTokenValid('delete'.$veiculo->getId(), $request->request->get('_token'))) {
  158.             $veiculoRepository->remove($veiculotrue);
  159.         }
  160.         return $this->redirectToRoute('app_veiculo_index', [], Response::HTTP_SEE_OTHER);
  161.     }
  162.     
  163.     private function verifica($str$pagina$page null) {
  164.         if ($str == "anterior") {
  165.             if ($pagina 1) {
  166.                 return 1;
  167.             }
  168.         }
  169.         if ($str == "proxima") {
  170.             if ($pagina $page) {
  171.                 return $page;
  172.             }
  173.             return $pagina;
  174.         }
  175.         if ($str == "ultima") {
  176.             if($page == "all"){
  177.                 $page $pagina;
  178.             }
  179.             $valor intdiv($pagina$page);
  180.             if (($pagina $page) > 0) {
  181.                 return ++$valor;
  182.             } else {
  183.                 return $valor;
  184.             }
  185.         }
  186.     } 
  187.     
  188.     
  189. }