src/Controller/ContaBancariaMovimentacaoController.php line 48

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ContaBancariaMovimentacao;
  4. use App\Entity\ContaBancaria;
  5. use App\Form\ContaBancariaMovimentacaoType;
  6. use App\Repository\ContaBancariaMovimentacaoRepository;
  7. use App\Repository\ContaBancariaRepository;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  13. use Dompdf\Dompdf;
  14. #[Route('/conta_movimentacao')]
  15. class ContaBancariaMovimentacaoController extends AbstractController
  16. {
  17.     
  18.     /**
  19.      * @IsGranted("ROLE_ADMIN")
  20.      */    
  21.     #[Route('/'name'app_conta_bancaria_movimentacao_index'methods: ['GET'])]
  22.     public function index(ContaBancariaMovimentacaoRepository $contaBancariaMovimentacaoRepository,Request $request): Response{
  23.             
  24.             $filter['tipo']         = $request->get('tipo') ?: '';
  25.             $filter['descricao']    = $request->get('descricao') ?: '';
  26.             $filter['pagina']       = $request->get('pagina') ?: 1;
  27.             $filter['anterior']     = $this->verifica('anterior',($filter['pagina']));
  28.             $filter['primeira']     = 1;
  29.             $filter['codigo']    = $request->get('codigo') ?: '';
  30.             $filter['page'] = $request->get('page') ?: 10;
  31.             $filter['total_registros'] = $contaBancariaMovimentacaoRepository->filterGridTotal($filter);
  32.             
  33.             $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);     
  34.             $filter['proxima']      = $this->verifica('proxima', (1$filter['pagina']), $filter['ultima']);            
  35.             $filter['dataInicial']  ='';
  36.             $filter['dataFinal']    = '';
  37.             
  38.             $filter['conta']    = $request->get('conta') ?: '';
  39.             return $this->render('conta_bancaria_movimentacao/index.html.twig', [
  40.                         'filtro' => $filter,
  41.                         'contas_movimetacao' => $contaBancariaMovimentacaoRepository->filterGrid($filter),
  42.             ]);       
  43.     }
  44.     
  45.     #[Route('/movimentacoes'name'app_conta_bancaria_movimentacao_publico'methods: ['GET'])]
  46.     public function conta_bancaria(ContaBancariaMovimentacaoRepository $contaBancariaMovimentacaoRepositoryRequest $requestContaBancariaRepository $contaRepository): Response {
  47.         
  48.         $filter['codigo'] = $request->get('codigo') ?: 0;
  49.         $filter['ano'] = $request->get('ano')?: date('Y');        
  50.         $filter['mes'] = $request->get('mes')?: date('m'); 
  51.         
  52.         $conta $contaRepository->findOneBy(array('codigo'=>$filter['codigo']));        
  53.         $lista $contaBancariaMovimentacaoRepository->findBy(array('codigo'=>$filter['codigo'],'ano'=>$filter['ano'],'mes'=>$filter['mes']),array('data'=>'ASC'));
  54.         
  55.         if ($request->get('impressao')) {
  56.             $filter['page'] = 'all';
  57.             if ($request->get('pdf')) {
  58.                 $html $this->renderView('conta_bancaria_movimentacao/impressao_pdf.html.twig', [
  59.                     'filtro' => $filter,
  60.                     'contas' => $lista,
  61.                     'conta' => $conta,
  62.                 ]);
  63.                 $dompdf = new Dompdf();
  64.                 $dompdf->setPaper('A4''landscape');
  65.                 $dompdf->set_option("isPhpEnabled"true);
  66.                 $options $dompdf->getOptions();
  67.                 $options->setDefaultFont('Courier');
  68.                 $dompdf->setOptions($options);
  69.                 $dompdf->loadHtml($html);
  70.                 $dompdf->render();
  71.                 return new Response(
  72.                         $dompdf->stream('resume', ["Attachment" => false]),
  73.                         Response::HTTP_OK,
  74.                         ['Content-Type' => 'application/pdf']
  75.                         );
  76.             }elseif($request->get('excel')){ 
  77.             
  78.             $titulos = array("DATA","TIPO","VALOR","DESCRIÇÃO");
  79.                 $rows[] = implode(';'$titulos);
  80.                 
  81.                 foreach ($lista as $value) {
  82.                     $data = array($value->getData() ? $value->getData()->format('d/m/Y') :null$value->getTipo()  . $value->getTipoDescricao()  , $value->getValor(), $value->getDescricao());
  83.                     $rows[] = implode(';'$data);
  84.                 }    
  85.                 
  86.                 $content implode("\n"$rows);
  87.                 $response = new Response($content);
  88.                 $response->headers->set('Content-Type''text/csv');
  89.                 return $response;
  90.             }else{
  91.                 return $this->render('conta_bancaria_movimentacao/impressao.html.twig', [
  92.                             'filtro' => $filter,
  93.                             'contas' => $lista,
  94.                             'conta' => $conta,
  95.                 ]);
  96.             }
  97.         }
  98.         
  99.         return $this->render('conta_bancaria_movimentacao/conta_bancaria_movimentacao.html.twig', [
  100.                     'filtro' => $filter,
  101.                     'contas' => $lista,
  102.                     'conta' => $conta,
  103.         ]);
  104.     }    
  105.     
  106.     private function verifica($str$pagina$page null) {
  107.         if ($str == "anterior") {
  108.             if ($pagina 1) {
  109.                 return 1;
  110.             }
  111.         }
  112.         if ($str == "proxima") {
  113.             if ($pagina $page) {
  114.                 return $page;
  115.             }
  116.             return $pagina;
  117.         }
  118.         if ($str == "ultima") {
  119.             if($page == "all"){
  120.                 $page $pagina;
  121.             }
  122.             $valor intdiv($pagina$page);
  123.             if (($pagina $page) > 0) {
  124.                 return ++$valor;
  125.             } else {
  126.                 return $valor;
  127.             }
  128.         }
  129.     }
  130.     
  131.     /**
  132.      * @IsGranted("ROLE_ADMIN")
  133.      */   
  134.     #[Route('/new'name'app_conta_bancaria_movimetacao_new'methods: ['GET''POST'])]
  135.     public function new(Request $requestContaBancariaMovimentacaoRepository $contaBancariaMovimentacaoRepository): Response
  136.     {
  137.         $contaMovimentacao = new ContaBancariaMovimentacao();
  138.         $form $this->createForm(ContaBancariaMovimentacaoType::class, $contaMovimentacao);
  139.         $form->handleRequest($request);
  140.         if ($form->isSubmitted() && $form->isValid()) {
  141.             $contaBancariaMovimentacaoRepository->save($contaMovimentacaotrue);
  142.             return $this->redirectToRoute('app_conta_bancaria_movimentacao_index', [], Response::HTTP_SEE_OTHER);
  143.         }
  144.         return $this->renderForm('conta_bancaria_movimentacao/new.html.twig', [
  145.             'conta_bancarium' => $contaMovimentacao,
  146.             'form' => $form,
  147.         ]);
  148.     }
  149.     
  150.     /**
  151.      * @IsGranted("ROLE_ADMIN")
  152.      */   
  153.     #[Route('/{id}/edit'name'app_conta_bancaria_movimentacao_edit'methods: ['GET''POST'])]
  154.     public function edit(Request $requestContaBancariaMovimentacao $contaMovimentacaoContaBancariaMovimentacaoRepository $contaBancariaMovimentacaoRepository): Response
  155.     {
  156.         $form $this->createForm(ContaBancariaMovimentacaoType::class, $contaMovimentacao);
  157.         $form->handleRequest($request);
  158.         if ($form->isSubmitted() && $form->isValid()) {
  159.             $contaBancariaMovimentacaoRepository->save($contaMovimentacaotrue);
  160.             return $this->redirectToRoute('app_conta_bancaria_movimentacao_index', [], Response::HTTP_SEE_OTHER);
  161.         }
  162.         
  163.         return $this->renderForm('conta_bancaria_movimentacao/edit.html.twig', [
  164.             'conta_movimentacao' => $contaMovimentacao,
  165.             'form' => $form,
  166.         ]);
  167.     }
  168.     
  169.     /**
  170.      * @IsGranted("ROLE_ADMIN")
  171.      */   
  172.     #[Route('/{id}'name'app_conta_bancaria_movimentacao_delete'methods: ['POST'])]
  173.     public function delete(Request $requestContaBancariaMovimentacao $contaBancariumContaBancariaMovimentacaoRepository $ContaBancariaMovimentacaoRepository): Response
  174.     {
  175.         if ($this->isCsrfTokenValid('delete'.$contaBancarium->getId(), $request->request->get('_token'))) {
  176.             $ContaBancariaMovimentacaoRepository->remove($contaBancariumtrue);
  177.         }
  178.         return $this->redirectToRoute('app_conta_bancaria_movimentacao_index', [], Response::HTTP_SEE_OTHER);
  179.     }
  180. }