src/Controller/ContaBancariaController.php line 49

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ContaBancaria;
  4. use App\Entity\ContaBancariaMovimentacao;
  5. use App\Form\ContaBancariaType;
  6. use App\Repository\ContaBancariaRepository;
  7. use App\Repository\ContaBancariaMovimentacaoRepository;
  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/bancaria')]
  15. class ContaBancariaController extends AbstractController {
  16.     /**
  17.      * @IsGranted("ROLE_ADMIN")
  18.      */
  19.     #[Route('/'name'app_conta_bancaria_index'methods: ['GET'])]
  20.     public function index(ContaBancariaRepository $contaBancariaRepositoryRequest $request): Response {
  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'] = $contaBancariaRepository->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.         $ano date('Y');
  33.         for($i=2018$i <= $ano;$i++){
  34.             $anos[] = $i;
  35.             
  36.         }
  37.         return $this->render('conta_bancaria/index.html.twig', [
  38.                     'filtro' => $filter,
  39.                     'contas' => $contaBancariaRepository->filterGrid($filter),
  40.                     'anos' => $anos
  41.         ]);
  42.     }
  43.     #[Route('/contas/ano'name'app_conta_bancaria_publico_ano'methods: ['GET'])]
  44.     
  45.     public function conta_ano(ContaBancariaRepository $contaBancariaRepositoryRequest $request): Response {
  46.         $lista $contaBancariaRepository->getAnos();
  47.         return $this->render('conta_bancaria/ano.html.twig', [
  48.                             'itens' => $lista,
  49.         ]);        
  50.     }
  51.         #[Route('/contas/mes'name'app_conta_bancaria_publico_mes'methods: ['GET'])]
  52.     
  53.     public function conta_mes(ContaBancariaRepository $contaBancariaRepositoryRequest $request): Response {
  54.         $ano $request->get('ano')?: date('Y');
  55.         $lista $contaBancariaRepository->getMes($ano);
  56.         
  57.         return $this->render('conta_bancaria/mes.html.twig', [
  58.                             'itens' => $lista,
  59.                             'ano' => $ano,
  60.         ]);        
  61.     }
  62.     #[Route('/contas'name'app_conta_bancaria_publico'methods: ['GET'])]
  63.     public function conta(ContaBancariaRepository $contaBancariaRepositoryRequest $request): Response {        
  64.         $filter['ano'] = $request->get('ano')?: date('Y');        
  65.         $filter['mes'] = $request->get('mes')?: date('m');        
  66.         $filter['tipo'] = $request->get('tipo') ?: '';
  67.         $filter['descricao'] = $request->get('descricao') ?: '';
  68.         $filter['pagina'] = $request->get('pagina') ?: 1;
  69.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  70.         $filter['primeira'] = 1;
  71.         $filter['total_registros'] = $contaBancariaRepository->filterGridTotal($filter);
  72.         $filter['page'] = $request->get('page') ?: 10;
  73.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  74.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']); 
  75.          $filter['page'] = $request->get('page') ?: 10;
  76.         $filter['dataInicial'] = '';
  77.         $filter['dataFinal'] = '';  
  78.         
  79.         if ($request->get('impressao')) {
  80.             $filter['page'] = 'all';
  81.             if ($request->get('pdf')) {
  82.                 $html $this->renderView('conta_bancaria/impressao_pdf.html.twig', [
  83.                     'filtro' => $filter,
  84.                     'contas' => $contaBancariaRepository->filterGrid($filter),
  85.                 ]);
  86.                 $dompdf = new Dompdf();
  87.                 $dompdf->setPaper('A4''landscape');
  88.                 $dompdf->set_option("isPhpEnabled"true);
  89.                 $options $dompdf->getOptions();
  90.                 $options->setDefaultFont('Courier');
  91.                 $dompdf->setOptions($options);
  92.                 $dompdf->loadHtml($html);
  93.                 $dompdf->render();
  94.                 return new Response(
  95.                         $dompdf->stream('resume', ["Attachment" => false]),
  96.                         Response::HTTP_OK,
  97.                         ['Content-Type' => 'application/pdf']
  98.                         );
  99.             }elseif($request->get('excel')){ 
  100.             $lista =$contaBancariaRepository->filterGrid($filter); 
  101.             $titulos = array("Ano","MES","AGENCIA","CONTA","ENTRADA","SAIDA","SALDO INICIAL""SALDO FINAL","FINALIDADE");
  102.                 $rows[] = implode(';'$titulos);
  103.                 
  104.                 foreach ($lista as $value) {
  105.                     $data = array($value->getAno(), $value->getMes() , $value->getAgencia(), $value->getConta(),$value->getEntrada(),$value->getSaida(),$value->getSaldoInicial() , $value->getSaldoFinal(),$value->getDescricao());
  106.                     $rows[] = implode(';'$data);
  107.                 }    
  108.                 
  109.                 $content implode("\n"$rows);
  110.                 $response = new Response($content);
  111.                 $response->headers->set('Content-Type''text/csv');
  112.                 return $response;
  113.             }else{
  114.                 return $this->render('conta_bancaria/impressao.html.twig', [
  115.                             'filtro' => $filter,
  116.                             'contas' => $contaBancariaRepository->filterGrid($filter),
  117.                 ]);
  118.             }
  119.         }
  120.         
  121.         return $this->render('conta_bancaria/conta_bancaria.html.twig', [
  122.                     'filtro' => $filter,
  123.                     'contas' => $contaBancariaRepository->filterGrid($filter),
  124.         ]);
  125.     }    
  126.     private function verifica($str$pagina$page null) {
  127.         if ($str == "anterior") {
  128.             if ($pagina 1) {
  129.                 return 1;
  130.             }
  131.         }
  132.         if ($str == "proxima") {
  133.             if ($pagina $page) {
  134.                 return $page;
  135.             }
  136.             return $pagina;
  137.         }
  138.         if ($str == "ultima") {
  139.             if($page == "all"){
  140.                 $page $pagina;
  141.             }
  142.             $valor intdiv($pagina$page);
  143.             if (($pagina $page) > 0) {
  144.                 return ++$valor;
  145.             } else {
  146.                 return $valor;
  147.             }
  148.         }
  149.     }
  150.     
  151.     /**
  152.      * @IsGranted("ROLE_ADMIN")
  153.      */   
  154.     #[Route('/new'name'app_conta_bancaria_new'methods: ['GET''POST'])]
  155.     public function new(Request $requestContaBancariaRepository $contaBancariaRepository): Response {
  156.         $contaBancarium = new ContaBancaria();
  157.         $form $this->createForm(ContaBancariaType::class, $contaBancarium);
  158.         $form->handleRequest($request);
  159.         if ($form->isSubmitted() && $form->isValid()) {
  160.             $contaBancariaRepository->save($contaBancariumtrue);
  161.             return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
  162.         }
  163.         return $this->renderForm('conta_bancaria/new.html.twig', [
  164.                     'conta_bancarium' => $contaBancarium,
  165.                     'form' => $form,
  166.         ]);
  167.     }
  168.     
  169.     /**
  170.      * @IsGranted("ROLE_ADMIN")
  171.      */   
  172.     #[Route('/{id}/edit'name'app_conta_bancaria_edit'methods: ['GET''POST'])]
  173.     public function edit(Request $requestContaBancaria $contaBancariumContaBancariaRepository $contaBancariaRepository): Response {
  174.         $form $this->createForm(ContaBancariaType::class, $contaBancarium);
  175.         $form->handleRequest($request);
  176.         if ($form->isSubmitted() && $form->isValid()) {
  177.             $contaBancariaRepository->save($contaBancariumtrue);
  178.             return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
  179.         }
  180.         return $this->renderForm('conta_bancaria/edit.html.twig', [
  181.                     'conta_bancarium' => $contaBancarium,
  182.                     'form' => $form,
  183.         ]);
  184.     }
  185.     
  186.     /**
  187.      * @IsGranted("ROLE_ADMIN")
  188.      */   
  189.     #[Route('/{id}'name'app_conta_bancaria_delete'methods: ['POST'])]
  190.     public function delete(Request $requestContaBancaria $contaBancariumContaBancariaRepository $contaBancariaRepositoryContaBancariaMovimentacaoRepository $contaBancariaMovimentacaoRepository): Response {
  191.         if ($this->isCsrfTokenValid('delete' $contaBancarium->getId(), $request->request->get('_token'))) {
  192.             $contaBancariaRepository->remove($contaBancariumtrue);
  193.         }
  194.         return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
  195.     }
  196.     
  197.     /**
  198.      * @IsGranted("ROLE_ADMIN")
  199.      */   
  200.     #[Route('/importar/dados'name'app_conta_bancaria_inport'methods: ['POST'])]
  201.     public function import(Request $requestContaBancariaRepository $contaRepositoryContaBancariaMovimentacaoRepository $contaBancariaMovimentacaoRepository): Response {
  202.         $ano $request->get('ano');
  203.         $mes $request->get('mes');
  204.         $ultimo_dia date("t"mktime(000$mes'01'$ano));
  205.         $inicial $ano "-" $mes "-01";
  206.         $final $ano "-" $mes "-" $ultimo_dia;
  207.         $mes_extenso "";
  208.         switch ($mes) {
  209.             case "01" $mes_extenso "JANEIRO";
  210.                 break;
  211.             case "02" $mes_extenso "FEVEREIRO";
  212.                 break;
  213.             case "03" $mes_extenso "MARÇO";
  214.                 break;
  215.             case "04" $mes_extenso "ABRIL";
  216.                 break;
  217.             case "05" $mes_extenso "MAIO";
  218.                 break;
  219.             case "06" $mes_extenso "JUNHO";
  220.                 break;
  221.             case "07" $mes_extenso "JULHO";
  222.                 break;
  223.             case "08" $mes_extenso "AGOSTO";
  224.                 break;
  225.             case "09" $mes_extenso "SETEMBRO";
  226.                 break;
  227.             case "10" $mes_extenso "OUTUBRO";
  228.                 break;
  229.             case "11" $mes_extenso "MOVEMBRO";
  230.                 break;
  231.             case "12" $mes_extenso "DEZEMBRO";
  232.                 break;
  233.         }
  234.         
  235.         
  236.         if($contaRepository->findOneBy(array('mes'=>$mes_extenso,'ano'=>$ano)) != NULL){
  237.             $this->addFlash('errors'"O MÊS DE " $mes_extenso " DO ANO $ano  JÁ FOI IMPORTADO ANTERIORMENTE.");
  238.             return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
  239.         }
  240.         
  241.         $url "http://143.255.241.145:8000/api/accounts/?institution=1&initial_date=" $inicial "&final_date=" $final;
  242.         $ch curl_init();
  243.         curl_setopt($chCURLOPT_URL$url);
  244.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  245.         $lista json_decode(curl_exec($ch), true);
  246.         curl_close($ch);
  247.         $contador 0;        
  248.         if (is_array($lista)) {
  249.             $contador count($lista);
  250.             foreach ($lista as $item) {
  251.                 $conta = new ContaBancaria();
  252.                 $conta->setAdministracao($item["administracao"]);
  253.                 $conta->setAgencia($item["agencia"] . "-" $item["dv_agencia"]);
  254.                 // $conta->setAgenciaDv($item["dv_agencia"]);
  255.                 $conta->setAno($item["ano"]);
  256.                 $conta->setConta($item["conta"] . "-" $item["dv_conta"]);
  257.                 // $conta->setContaDv($item["dv_conta"]);
  258.                 $conta->setCodigo($item["id"]);
  259.                 $conta->setDescricao($item["descricao"]);
  260.                 $conta->setEntrada($item["entradas_mes"]);
  261.                 $conta->setMes($mes_extenso);
  262.                 $conta->setSaida($item["saidas_mes"]);
  263.                 $conta->setSaldoFinal($item["saldo_final_mes"]);
  264.                 $conta->setSaldoInicial($item["saldo_inicial_mes"]);
  265.                 $contaRepository->save($contafalse);
  266.             }
  267.         }
  268.             
  269.             $url_movimentacao "http://143.255.241.145:8000/api/accounts/moviments?institution=1&initial_date=" $inicial "&final_date=" $final;                                
  270.             $ch curl_init();
  271.             curl_setopt($chCURLOPT_URL$url_movimentacao);
  272.             curl_setopt($chCURLOPT_RETURNTRANSFER1);
  273.             $listaMov json_decode(curl_exec($ch), true);
  274.             curl_close($ch);             
  275.             if (is_array($listaMov)) {         
  276.                 foreach ($listaMov as $itemMov) {                        
  277.                     $mov = new ContaBancariaMovimentacao();
  278.                     $mov->setTipo($itemMov['tipo_movimentacao']);
  279.                     $mov->setTipoDescricao($itemMov['tipo_entrada_saida']);
  280.                     $mov->setDescricao($itemMov['descr_movimentacao']);
  281.                     $mov->setValor($itemMov['valor_entra_saida']);
  282.                     $mov->setData(date_create($itemMov['data_movimentacao']));
  283.                     $mov->setCodigo($itemMov["id_conta"]);
  284.                     $mov->setMes($mes_extenso);
  285.                     $mov->setAno($ano);
  286.                     $contaBancariaMovimentacaoRepository->save($movfalse);
  287.                 }
  288.             }
  289.             
  290.         $contaBancariaMovimentacaoRepository->flush();
  291.                 
  292.         if($contador == 0){
  293.             $this->addFlash('warning'"NENHUM REGISTRO REF. AO MÊS DE "$mes_extenso ." FOI IMPORTADO.");
  294.         }else{
  295.             $this->addFlash('success'"REGISTROS REF. AO MÊS DE "$mes_extenso ." FORAM IMPORTADOS COM SUCESSO.");            
  296.         }
  297.         return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
  298.     }
  299. }