src/Controller/SubvencaoSocialEController.php line 72

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\SubvencaoSocialE;
  4. use App\Form\SubvencaoSocialEType;
  5. use App\Repository\SubvencaoSocialERepository;
  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. use App\Entity\SubvencaoSocialEDocumento;
  12. use App\Repository\SubvencaoSocialEDocumentoRepository;
  13. use Dompdf\Dompdf;
  14. #[Route('/subvencao')]
  15. class SubvencaoSocialEController extends AbstractController {
  16.     /**
  17.      * @IsGranted("ROLE_ADMIN")
  18.      */
  19.     #[Route('/arquivo/upload'name'app_subvencao_social_e_arquivo'methods: ['POST'])]
  20.     public function arquivo(Request $requestSubvencaoSocialERepository $emSubvencaoSocialEDocumentoRepository $documento): Response {
  21.         $subvencao $em->find($request->get('subvencao'));
  22.         if ($subvencao) {
  23.             $originalFilename $_FILES['arquivo']['name'];
  24.             $extensao pathinfo($originalFilename);
  25.             $fileName uniqid() . '.' $extensao['extension'];
  26.             $entity = new SubvencaoSocialEDocumento();
  27.             $entity->setDescricao($request->get('descricao'));
  28.             $entity->setSubvencao($subvencao);
  29.             $entity->setDocumento($fileName);
  30.             $uploaddir 'arquivos/subvencao/';
  31.             $uploadfile $uploaddir $fileName;
  32.             if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)) {
  33.                 $documento->save($entitytrue);
  34.                 return $this->redirectToRoute('app_subvencao_social_e_edit', ['id' => $subvencao->getId(), 'arquivo' => 'insert'], Response::HTTP_SEE_OTHER);
  35.             } else {
  36.                 echo "Não foi possível realizar o upload do arquivo";
  37.                 die();
  38.             }
  39.         }
  40.     }
  41.     /**
  42.      * @IsGranted("ROLE_ADMIN")
  43.      */
  44.     #[Route('/'name'app_subvencao_social_e_index'methods: ['GET'])]
  45.     public function index(SubvencaoSocialERepository $subvencaoSocialERepositoryRequest $request): Response {
  46.         $filter['tipo'] = $request->get('tipo') ?: '';
  47.         $filter['descricao'] = $request->get('descricao') ?: '';
  48.         $filter['dataInicial'] = $request->get('dataInicial') ?: '';
  49.         $filter['dataFinal'] = $request->get('dataFinal') ?: '';
  50.         $filter['pagina'] = $request->get('pagina') ?: 1;
  51.         $filter['page'] = $request->get('page') ?: 10;
  52.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  53.         $filter['primeira'] = 1;
  54.         $filter['total_registros'] = $subvencaoSocialERepository->filterGridTotal($filter);
  55.         $filter['page'] = $request->get('page') ?: 10;
  56.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'], 10);
  57.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);
  58.         return $this->render('subvencao_social_e/index.html.twig', [
  59.                     'filtro' => $filter,
  60.                     'subvencao_social_es' => $subvencaoSocialERepository->filterGrid($filter),
  61.         ]);
  62.     }
  63.     #[Route('/ano'name'app_subvencao_social_e_ano'methods: ['GET'])]
  64.     public function subvencao_ano(SubvencaoSocialERepository $SubvencaoSocialERepositoryRequest $request): Response {
  65.         $lista $SubvencaoSocialERepository->getAnos();
  66.         return $this->render('subvencao_social_e/ano.html.twig', [
  67.                     'itens' => $lista,
  68.         ]);
  69.     }
  70.     #[Route('/relatorio'name'app_subvencao_social_e_relatorio'methods: ['GET'])]
  71.     public function relatorio(SubvencaoSocialERepository $SubvencaoSocialERepositoryRequest $request): Response {
  72.         $filter['ano'] = $request->get('ano') ?: date('Y');
  73.         //$filter['mes'] = $request->get('mes') ?: date('m');
  74.         $filter['tipo'] = $request->get('tipo') ?: '';
  75.         $filter['descricao'] = $request->get('descricao') ?: '';
  76.         $filter['pagina'] = $request->get('pagina') ?: 1;
  77.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  78.         $filter['primeira'] = 1;
  79.         $filter['total_registros'] = $SubvencaoSocialERepository->filterGridTotal($filter);
  80.         $filter['page'] = $request->get('page') ?: 10;
  81.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'], $filter['page']);
  82.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);
  83.         $filter['dataInicial'] = '';
  84.         $filter['dataFinal'] = '';
  85.         if ($request->get('impressao')) {
  86.             $filter['page'] = 'all';
  87.             if ($request->get('pdf')) {
  88.                 $html $this->renderView('subvencao_social_e/impressao_pdf.html.twig', [
  89.                     'filtro' => $filter,
  90.                     'lista' => $SubvencaoSocialERepository->filterGrid($filter),
  91.                 ]);
  92.                 $dompdf = new Dompdf();
  93.                 $dompdf->setPaper('A4''landscape');
  94.                 $dompdf->set_option("isPhpEnabled"true);
  95.                 $options $dompdf->getOptions();
  96.                 $options->setDefaultFont('Courier');
  97.                 $dompdf->setOptions($options);
  98.                 $dompdf->loadHtml($html);
  99.                 $dompdf->render();
  100.                 return new Response(
  101.                         $dompdf->stream('resume', ["Attachment" => false]),
  102.                         Response::HTTP_OK,
  103.                         ['Content-Type' => 'application/pdf']
  104.                 );
  105.             } elseif ($request->get('excel')) {
  106.                 $lista $SubvencaoSocialERepository->filterGrid($filter);
  107.                 $titulos = array("Nome""Convênio""Justificativa""Estimativa""Período Inicial""Período Final""Valor Mensal""Valor Total");
  108.                 $rows[] = implode(';'$titulos);
  109.                 foreach ($lista as $value) {
  110.                     $data = array($value->getNome(), $value->getConvenio(), $value->getJustificativa(), $value->getEstimativa(), $value->getPeriodoInicial() ? $value->getPeriodoInicial()->format('d/m/Y') : null$value->getPeriodoInicial() ? $value->getPeriodoFinal()->format('d/m/Y') : null$value->getValorMensal(), $value->getValorTotal());
  111.                     $rows[] = implode(';'$data);
  112.                 }
  113.                 $content implode("\n"$rows);
  114.                 $response = new Response($content);
  115.                 $response->headers->set('Content-Type''text/csv');
  116.                 return $response;
  117.             } else {
  118.                 return $this->render('subvencao_social_e/impressao.html.twig', [
  119.                             'filtro' => $filter,
  120.                             'lista' => $SubvencaoSocialERepository->filterGrid($filter),
  121.                 ]);
  122.             }
  123.         }
  124.         return $this->render('subvencao_social_e/subvencao_social_e.html.twig', [
  125.                     'filtro' => $filter,
  126.                     'lista' => $SubvencaoSocialERepository->filterGrid($filter),
  127.         ]);
  128.     }
  129.     private function verifica($str$pagina$page null) {
  130.         if ($str == "anterior") {
  131.             if ($pagina 1) {
  132.                 return 1;
  133.             }
  134.         }
  135.         if ($str == "proxima") {
  136.             if ($pagina $page) {
  137.                 return $page;
  138.             }
  139.             return $pagina;
  140.         }
  141.         if ($str == "ultima") {
  142.             if ($page == "all") {
  143.                 $page $pagina;
  144.             }
  145.             $valor intdiv($pagina$page);
  146.             if (($pagina $page) > 0) {
  147.                 return ++$valor;
  148.             } else {
  149.                 return $valor;
  150.             }
  151.         }
  152.     }
  153.     private function mesExtenso($value) {
  154.         switch ($value) {
  155.             case "01" : return "JANEIRO";
  156.             case "02" : return "FEVEREIRO";
  157.             case "03" : return "MARÇO";
  158.             case "04" : return "ABRIL";
  159.             case "05" : return "MAIO";
  160.             case "06" : return "JUNHO";
  161.             case "07" : return "JULHO";
  162.             case "08" : return "AGOSTO";
  163.             case "09" : return "SETEMBRO";
  164.             case "10" : return "OUTUBRO";
  165.             case "11" : return "NOVEMBRO";
  166.             case "12" : return "DEZEMBRO";
  167.         }
  168.     }
  169.     /**
  170.      * @IsGranted("ROLE_ADMIN")
  171.      */  
  172.     #[Route('/new'name'app_subvencao_social_e_new'methods: ['GET''POST'])]
  173.     public function new(Request $requestSubvencaoSocialERepository $subvencaoSocialERepository): Response {
  174.         $nav['dados'] = 'show active';
  175.         $nav['arquivos'] = '';
  176.         $subvencaoSocialE = new SubvencaoSocialE();
  177.         $form $this->createForm(SubvencaoSocialEType::class, $subvencaoSocialE);
  178.         $form->handleRequest($request);
  179.         if ($form->isSubmitted() && $form->isValid()) {
  180.             $subvencaoSocialE->setAno($subvencaoSocialE->getPeriodoInicial()->format('Y'));
  181.             $subvencaoSocialE->setMes($this->mesExtenso($subvencaoSocialE->getPeriodoInicial()->format('m')));
  182.             $subvencaoSocialERepository->save($subvencaoSocialEtrue);
  183.             return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  184.         }
  185.         return $this->renderForm('subvencao_social_e/new.html.twig', [
  186.                     'subvencao_social_e' => $subvencaoSocialE,
  187.                     'form' => $form,
  188.                     'nav' => $nav
  189.         ]);
  190.     }
  191.     /**
  192.      * @IsGranted("ROLE_ADMIN")
  193.      */  
  194.     #[Route('/{id}'name'app_subvencao_social_e_show'methods: ['GET'])]
  195.     public function show(SubvencaoSocialE $subvencaoSocialE): Response {
  196.         return $this->render('subvencao_social_e/show.html.twig', [
  197.                     'subvencao_social_e' => $subvencaoSocialE,
  198.         ]);
  199.     }
  200.     /**
  201.      * @IsGranted("ROLE_ADMIN")
  202.      */  
  203.     #[Route('/{id}/edit'name'app_subvencao_social_e_edit'methods: ['GET''POST'])]
  204.     public function edit(Request $requestSubvencaoSocialE $subvencaoSocialESubvencaoSocialERepository $subvencaoSocialERepository): Response {
  205.         $form $this->createForm(SubvencaoSocialEType::class, $subvencaoSocialE);
  206.         $form->handleRequest($request);
  207.         if ($form->isSubmitted() && $form->isValid()) {
  208.             $subvencaoSocialERepository->save($subvencaoSocialEtrue);
  209.             return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  210.         }
  211.         if ($request->get('arquivo')) {
  212.             $nav['dados'] = '';
  213.             $nav['arquivos'] = 'show active';
  214.         } else {
  215.             $nav['dados'] = 'show active';
  216.             $nav['arquivos'] = '';
  217.         }
  218.         return $this->renderForm('subvencao_social_e/edit.html.twig', [
  219.                     'subvencao_social_e' => $subvencaoSocialE,
  220.                     'form' => $form,
  221.                     'nav' => $nav
  222.         ]);
  223.     }
  224.     /**
  225.      * @IsGranted("ROLE_ADMIN")
  226.      */  
  227.     #[Route('/delete/{id}'name'app_subvencao_social_e_delete'methods: ['GET'])]
  228.     public function delete(Request $request,  SubvencaoSocialERepository $em): Response {
  229.         if ($entity $em->find($request->get('id'))) {
  230.             try {
  231.                 $em->remove($entitytrue);
  232.                 $this->addFlash('success'"REGISTRO EXCLUIDO COM SUCESSO.");
  233.                 return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  234.             } catch (\Exception $e) {
  235.                 $this->addFlash('errors'"NÃO FOI POSSÍVEL EXCLUIR O REGISTRO. VERIFIQUE SE EXISTE ALGUM DOCUMENTO VINCULADO.");
  236.                 return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  237.             }
  238.         }else{
  239.                 $this->addFlash('errors'"NÃO FOI POSSÍVEL LOCALIZAR O REGISTRO INFORMADO.");
  240.                 return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);            
  241.         }        
  242.        
  243.     }
  244.     /**
  245.      * @IsGranted("ROLE_ADMIN")
  246.      */  
  247.     #[Route('/delete/documento/{id}'name'app_subvencao_social_e_documento_delete'methods: ['GET'])]
  248.     public function deleteDocumento(Request $requestSubvencaoSocialEDocumento $documentoSubvencaoSocialEDocumentoRepository $documentoRepository): Response {
  249.         if ($documento) {
  250.             $subvencao $documento->getSubvencao();
  251.             $documentoRepository->remove($documentotrue);
  252.             $form $this->createForm(SubvencaoSocialEType::class, $subvencao);
  253.             $form->handleRequest($request);
  254.             $nav['dados'] = '';
  255.             $nav['arquivos'] = 'show active';
  256.             $this->addFlash('success'"DOCUMENTO EXCLUIDO COM SUCESSO.");
  257.         }
  258.         return $this->renderForm('subvencao_social_e/edit.html.twig', [
  259.                     'subvencao_social_e' => $subvencao,
  260.                     'form' => $form,
  261.                     'nav' => $nav
  262.         ]);
  263.         //return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  264.     }
  265. }