src/Controller/VeiculoController.php line 52
<?php
namespace App\Controller;
use App\Entity\Veiculo;
use App\Entity\VeiculoAbastecimento;
use App\Entity\VeiculoManutencao;
use App\Entity\VeiculoMulta;
use App\Entity\VeiculoSaida;
use App\Form\VeiculoType;
use App\Repository\VeiculoRepository;
use App\Repository\VeiculoAbastecimentoRepository;
use App\Repository\VeiculoSaidaRepository;
use App\Repository\VeiculoManutencaoRepository;
use App\Repository\VeiculoMultaRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
#[Route('/veiculo')]
class VeiculoController extends AbstractController
{
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/', name: 'app_veiculo_index', methods: ['GET'])]
public function index(VeiculoRepository $veiculoRepository,Request $request): Response
{
$filter['tipo'] = $request->get('tipo') ?: '';
$filter['descricao'] = $request->get('descricao') ?: '';
$filter['pagina'] = $request->get('pagina') ?: 1;
$filter['anterior'] = $this->verifica('anterior', (1 - $filter['pagina']));
$filter['primeira'] = 1;
$filter['total_registros'] = $veiculoRepository->filterGridTotal($filter);
$filter['page'] = $request->get('page') ?: 10;
$filter['ultima'] = $this->verifica('ultima', $filter['total_registros'],$filter['page']);
$filter['proxima'] = $this->verifica('proxima', (1 + $filter['pagina']), $filter['ultima']);
$filter['dataInicial'] = '';
$filter['dataFinal'] = '';
return $this->render('veiculo/index.html.twig', [
'veiculos' => $veiculoRepository->filterGrid($filter),
'filtro' => $filter
]);
}
#[Route('/publico', name: 'app_veiculo_publico', methods: ['GET'])]
public function veiculo(VeiculoRepository $veiculoRepository, Request $request): Response {
$filter['tipo'] = $request->get('tipo') ?: '';
//$filter['tipoTitulo'] = $this->verficaTipo($filter['tipo']);
$filter['descricao'] = $request->get('descricao') ?: '';
$filter['dataInicial'] = $request->get('dataInicial') ?: '';
$filter['dataFinal'] = $request->get('dataFinal') ?: '';
$filter['pagina'] = $request->get('pagina') ?: 1;
$filter['anterior'] = $this->verifica('anterior', (1 - $filter['pagina']));
$filter['primeira'] = 1;
$filter['total_registros'] = $veiculoRepository->filterGridTotal($filter);
$filter['ultima'] = $this->verifica('ultima', $filter['total_registros'], 10);
$filter['proxima'] = $this->verifica('proxima', (1 + $filter['pagina']), $filter['ultima']);
$filter['page'] = $request->get('page') ?: 10;
if ($request->get('impressao')) {
$filter['page'] = 'all';
if($request->get('excel')){
$lista =$veiculoRepository->filterGrid($filter);
$titulos = array("Ano","DATA","NOME","MATRICULA","CARGO","DATA INICIAL","DATA FINAL", "QTD DIARIA",'DESTINO','TRANSPORTE','VALOR UNIT',"VALOR TOTAL","OBJETIVO");
$rows[] = implode(';', $titulos);
foreach ($lista as $value) {
$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());
$rows[] = implode(';', $data);
}
$content = implode("\n", $rows);
$response = new Response($content);
$response->headers->set('Content-Type', 'text/csv');
return $response;
}else{
return $this->render('veiculo/impressao.html.twig', [
'filtro' => $filter,
'veiculos' => $veiculoRepository->filterGrid($filter),
]);
}
}
return $this->render('veiculo/veiculo.html.twig', [
'filtro' => $filter,
'veiculos' => $veiculoRepository->filterGrid($filter),
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/new', name: 'app_veiculo_new', methods: ['GET', 'POST'])]
public function new(Request $request, VeiculoRepository $veiculoRepository): Response
{
$veiculo = new Veiculo();
$form = $this->createForm(VeiculoType::class, $veiculo);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$veiculoRepository->save($veiculo, true);
return $this->redirectToRoute('app_veiculo_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('veiculo/new.html.twig', [
'veiculo' => $veiculo,
'form' => $form,
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
// #[Route('/{id}', name: 'app_veiculo_show', methods: ['GET'])]
// public function show(Veiculo $veiculo): Response
// {
// return $this->render('veiculo/show.html.twig', [
// 'veiculo' => $veiculo,
// ]);
// }
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}/edit', name: 'app_veiculo_edit', methods: ['GET', 'POST'])]
public function edit(Request $request, Veiculo $veiculo, VeiculoRepository $veiculoRepository): Response
{
$nav['vei'] = '';
$nav['mov'] = '';
$nav['man'] = '';
$nav['aba'] = '';
$nav['mul'] = '';
if ($request->get('aba')) {
$nav[$request->get('aba')] = 'show active';
}else{
$nav['vei'] = 'show active';
}
$form = $this->createForm(VeiculoType::class, $veiculo);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$veiculoRepository->save($veiculo, true);
return $this->redirectToRoute('app_veiculo_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('veiculo/edit.html.twig', [
'veiculo' => $veiculo,
'form' => $form,
'nav' => $nav
]);
}
/**
* @IsGranted("ROLE_ADMIN")
*/
#[Route('/{id}', name: 'app_veiculo_delete', methods: ['POST'])]
public function delete(Request $request, Veiculo $veiculo, VeiculoRepository $veiculoRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$veiculo->getId(), $request->request->get('_token'))) {
$veiculoRepository->remove($veiculo, true);
}
return $this->redirectToRoute('app_veiculo_index', [], Response::HTTP_SEE_OTHER);
}
private function verifica($str, $pagina, $page = null) {
if ($str == "anterior") {
if ($pagina < 1) {
return 1;
}
}
if ($str == "proxima") {
if ($pagina > $page) {
return $page;
}
return $pagina;
}
if ($str == "ultima") {
if($page == "all"){
$page = $pagina;
}
$valor = intdiv($pagina, $page);
if (($pagina % $page) > 0) {
return ++$valor;
} else {
return $valor;
}
}
}
}