src/Controller/ConselhoMunicipalController.php line 173

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ConselhoMunicipal;
  4. use App\Entity\ConselhoMunicipalDocumento;
  5. use App\Entity\ConselhoMunicipalContato;
  6. use App\Repository\ConselhoMunicipalContatoRepository;
  7. use App\Form\ConselhoMunicipalType;
  8. use App\Repository\ConselhoMunicipalRepository;
  9. use App\Repository\ConselhoMunicipalDocumentoRepository;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  15. #[Route('/conselho/municipal')]
  16. class ConselhoMunicipalController extends AbstractController
  17. {
  18.     /**
  19.      * @IsGranted("ROLE_ADMIN")
  20.      */   
  21.    #[Route('/arquivo/upload'name'app_conselho_municipal_arquivo'methods: ['POST'])]
  22.     public function arquivo(Request $requestConselhoMunicipalRepository $emConselhoMunicipalDocumentoRepository $documento): Response
  23.     {              
  24.         $conselho $em->find($request->get('conselho'));
  25.         if( $conselho){
  26.             $originalFilename $_FILES['arquivo']['name'];
  27.             $extensao pathinfo($originalFilename);     
  28.             $fileName uniqid().'.'.$extensao['extension'];
  29.             
  30.             $entity = new ConselhoMunicipalDocumento();            
  31.             $entity->setDescricao($request->get('descricao'));
  32.             $entity->setConselhoMunicipal($conselho);
  33.             $entity->setDocumento($fileName);            
  34.             $uploaddir 'arquivos/conselho/';
  35.             $uploadfile $uploaddir $fileName;
  36.             if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploadfile)) {
  37.                 $documento->save($entity,true);             
  38.                 return $this->redirectToRoute('app_conselho_municipal_edit', ['id'=>$conselho->getId(),'nav'=>'arquivos'], Response::HTTP_SEE_OTHER);
  39.             } else {
  40.                 echo "Não foi possível realizar o upload do arquivo";
  41.                 die();
  42.             }            
  43.         }                           
  44.     }  
  45.     
  46.     /**
  47.      * @IsGranted("ROLE_ADMIN")
  48.      */   
  49.    #[Route('/contato'name'app_conselho_municipal_contato'methods: ['POST'])]
  50.     public function contato(Request $requestConselhoMunicipalRepository $emConselhoMunicipalContatoRepository $contato): Response
  51.     {              
  52.         $conselho $em->find($request->get('conselho'));
  53.         if( $conselho){
  54.             if($request->get('contato') != "0"){
  55.                 $entity $contato->find($request->get('contato'));
  56.             }else{            
  57.             $entity = new ConselhoMunicipalContato();            
  58.             }
  59.             
  60.             $entity->setContato($request->get('nome'));
  61.             $entity->setTelefone($request->get('telefone'));
  62.             $entity->setEmail($request->get('email'));
  63.             $entity->setCpf($request->get('cpf'));
  64.             $entity->setClasse($request->get('classe'));
  65.             $entity->setRepresentante($request->get('representante'));
  66.             $entity->setDataInicial($request->get('dataInicial'));
  67.             $entity->setDataFinal($request->get('dataFinal'));
  68.             $entity->setConselhoMunicipal($conselho);
  69.             $contato->save($entity,true);             
  70.             return $this->redirectToRoute('app_conselho_municipal_edit', ['id'=>$conselho->getId(),'nav'=>'contatos'], Response::HTTP_SEE_OTHER);
  71.         }                           
  72.     }    
  73.     /**
  74.      * @IsGranted("ROLE_ADMIN")
  75.      */    
  76.     #[Route('/'name'app_conselho_municipal_index'methods: ['GET'])]
  77.     public function index(ConselhoMunicipalRepository $conselhoMunicipalRepository,Request $request): Response
  78.     {
  79.         $filter['tipo'] = $request->get('tipo') ?: '';
  80.         $filter['descricao'] = $request->get('descricao') ?: '';
  81.         $filter['pagina'] = $request->get('pagina') ?: 1;
  82.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  83.         $filter['primeira'] = 1;
  84.         $filter['total_registros'] = $conselhoMunicipalRepository->filterGridTotal($filter);
  85.         $filter['page'] = $request->get('page') ?: 10;
  86.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  87.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  88.         $filter['dataInicial'] = '';
  89.         $filter['dataFinal'] = '';          
  90.         return $this->render('conselho_municipal/index.html.twig', [
  91.             'filtro' => $filter,
  92.             'lista' => $conselhoMunicipalRepository->filterGrid($filter),
  93.         ]);
  94.     }
  95.     
  96.    
  97.     #[Route('/conselhos'name'app_conselho_municipal_publico'methods: ['GET'])]
  98.     public function conselho(ConselhoMunicipalRepository $conselhoMunicipalRepositoryRequest $request): Response {        
  99.         $filter['ano'] = $request->get('ano')?: date('Y');        
  100.         //$filter['mes'] = $request->get('mes')?: date('m');        
  101.         $filter['tipo'] = $request->get('tipo') ?: '';
  102.         $filter['descricao'] = $request->get('descricao') ?: '';
  103.         $filter['pagina'] = $request->get('pagina') ?: 1;
  104.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  105.         $filter['primeira'] = 1;
  106.         $filter['total_registros'] = $conselhoMunicipalRepository->filterGridTotal($filter);
  107.         $filter['page'] = $request->get('page') ?: 10;
  108.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  109.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  110.         $filter['dataInicial'] = '';
  111.         $filter['dataFinal'] = '';  
  112.         
  113.         if ($request->get('impressao')) {
  114.             $filter['page'] = 'all';
  115.             if ($request->get('pdf')) {
  116.                 $html $this->renderView('conselho_municipal/impressao_pdf.html.twig', [
  117.                     'filtro' => $filter,
  118.                     'lista' => $conselhoMunicipalRepository->filterGrid($filter),
  119.                 ]);
  120.                 $dompdf = new Dompdf();
  121.                 $dompdf->setPaper('A4''landscape');
  122.                 $dompdf->set_option("isPhpEnabled"true);
  123.                 $options $dompdf->getOptions();
  124.                 $options->setDefaultFont('Courier');
  125.                 $dompdf->setOptions($options);
  126.                 $dompdf->loadHtml($html);
  127.                 $dompdf->render();
  128.                 return new Response(
  129.                         $dompdf->stream('resume', ["Attachment" => false]),
  130.                         Response::HTTP_OK,
  131.                         ['Content-Type' => 'application/pdf']
  132.                         );
  133.             }elseif($request->get('excel')){ 
  134.             $lista =$conselhoMunicipalRepository->filterGrid($filter); 
  135.             $titulos = array("SECRETARIA","DESCRIÇÃO","LEGISLAÇÃO","CONTATO","REPRESENTANTE","E-MAIL");
  136.                 $rows[] = implode(';'$titulos);
  137.                 
  138.                 foreach ($lista as $value) {
  139.                     foreach ($value->getConselhoMunicipalContatos() as $contato){
  140.                         $data = array($value->getSecretaria(), $value->getDescricao() , $value->getLegislacao(),$contato->getContato(),$contato->getRepresentante(),$contato->getEmail());
  141.                         $rows[] = implode(';'$data);
  142.                     }
  143.                 }    
  144.                 
  145.                 $content implode("\n"$rows);
  146.                 $response = new Response($content);
  147.                 $response->headers->set('Content-Type''text/csv');
  148.                 return $response;
  149.             }else{
  150.                 return $this->render('conselho_municipal/impressao.html.twig', [
  151.                             'filtro' => $filter,
  152.                             'lista' => $conselhoMunicipalRepository->filterGrid($filter),
  153.                 ]);
  154.             }
  155.         }
  156.         
  157.         return $this->render('conselho_municipal/conselhos.html.twig', [
  158.                     'filtro' => $filter,
  159.                     'lista' => $conselhoMunicipalRepository->filterGrid($filter),
  160.         ]);
  161.     }  
  162.     
  163.     #[Route('/conselhos/ano'name'app_conselho_municipal_publico_ano'methods: ['GET'])]
  164.     
  165.     public function conselho_ano(ConselhoMunicipalRepository $conselhoMunicipalRepositoryRequest $request): Response {
  166.         $lista $conselhoMunicipalRepository->getAnos();
  167.         return $this->render('conselho_municipal/ano.html.twig', [
  168.                             'itens' => $lista,
  169.         ]);        
  170.     }    
  171.     
  172.     /**
  173.      * @IsGranted("ROLE_ADMIN")
  174.      */
  175.     #[Route('/new'name'app_conselho_municipal_new'methods: ['GET''POST'])]
  176.     public function new(Request $requestConselhoMunicipalRepository $conselhoMunicipalRepository): Response
  177.     {
  178.         $nav['dados'] = 'show active';
  179.         $nav['arquivos'] = '';        
  180.         $nav['conselho'] = '';    
  181.         $conselhoMunicipal = new ConselhoMunicipal();
  182.         $form $this->createForm(ConselhoMunicipalType::class, $conselhoMunicipal);
  183.         $form->handleRequest($request);
  184.         if ($form->isSubmitted() && $form->isValid()) {
  185.             $conselhoMunicipalRepository->save($conselhoMunicipaltrue);
  186.             return $this->redirectToRoute('app_conselho_municipal_index', [], Response::HTTP_SEE_OTHER);
  187.         }
  188.         return $this->renderForm('conselho_municipal/new.html.twig', [
  189.             'conselho_municipal' => $conselhoMunicipal,
  190.             'form' => $form,
  191.             'nav' => $nav
  192.         ]);
  193.     }
  194.     /**
  195.      * @IsGranted("ROLE_ADMIN")
  196.      */  
  197.     #[Route('/{id}'name'app_conselho_municipal_show'methods: ['GET'])]
  198.     public function show(ConselhoMunicipal $conselhoMunicipal): Response
  199.     {
  200.         return $this->render('conselho_municipal/show.html.twig', [
  201.             'conselho_municipal' => $conselhoMunicipal,
  202.         ]);
  203.     }
  204.     /**
  205.      * @IsGranted("ROLE_ADMIN")
  206.      */
  207.     #[Route('/{id}/edit'name'app_conselho_municipal_edit'methods: ['GET''POST'])]
  208.     public function edit(Request $requestConselhoMunicipal $conselhoMunicipalConselhoMunicipalRepository $conselhoMunicipalRepository): Response
  209.     {
  210.         $form $this->createForm(ConselhoMunicipalType::class, $conselhoMunicipal);
  211.         $form->handleRequest($request);
  212.         if ($form->isSubmitted() && $form->isValid()) {
  213.             $conselhoMunicipalRepository->save($conselhoMunicipaltrue);
  214.             return $this->redirectToRoute('app_conselho_municipal_index', [], Response::HTTP_SEE_OTHER);
  215.         }
  216.         if($request->get('nav')){
  217.             if($request->get('nav') == 'arquivos'){
  218.                 $nav['dados'] = '';
  219.                 $nav['conselho'] = '';
  220.                 $nav['arquivos'] = 'show active';            
  221.             }else if($request->get('nav') == 'contatos'){
  222.                 $nav['dados'] = '';
  223.                 $nav['arquivos'] = '';
  224.                 $nav['conselho'] = 'show active';                            
  225.             }
  226.         }else{
  227.                 $nav['dados'] = 'show active';
  228.                 $nav['arquivos'] = '';
  229.                 $nav['conselho'] = '';             
  230.         }
  231.         return $this->renderForm('conselho_municipal/edit.html.twig', [
  232.             'conselho_municipal' => $conselhoMunicipal,
  233.             'form' => $form,
  234.             'nav' => $nav,
  235.         ]);
  236.     }
  237.     /**
  238.      * @IsGranted("ROLE_ADMIN")
  239.      */
  240.     
  241.     #[Route('/delete/{id}'name'app_conselho_municipal_delete'methods: ['GET'])]
  242.     public function delete(ConselhoMunicipalRepository $em ): Response {
  243.         if ($entity $em->find($request->get('id'))) {
  244.             try {
  245.                 $em->remove($entitytrue);
  246.                 $this->addFlash('success'"REGISTRO EXCLUIDO COM SUCESSO.");
  247.                 return $this->redirectToRoute('app_conselho_municipal_index', [], Response::HTTP_SEE_OTHER);
  248.             } catch (\Exception $e) {
  249.                 $this->addFlash('errors'"NÃO FOI POSSÍVEL EXCLUIR O REGISTRO. VERIFIQUE SE EXISTE ALGUM DOCUMENTO VINCULADO.");
  250.                 return $this->redirectToRoute('app_conselho_municipal_index', [], Response::HTTP_SEE_OTHER);
  251.             }
  252.         }else{
  253.                 $this->addFlash('errors'"NÃO FOI POSSÍVEL LOCALIZAR O REGISTRO INFORMADO.");
  254.                 return $this->redirectToRoute('app_conselho_municipal_index', [], Response::HTTP_SEE_OTHER);            
  255.         }
  256.     } 
  257.     /**
  258.      * @IsGranted("ROLE_ADMIN")
  259.      */  
  260.     #[Route('/delete/documento/{id}'name'app_conselho_municipal_documento_delete'methods: ['GET'])]
  261.     public function deleteDocumento(Request $requestConselhoMunicipalDocumento $documentoConselhoMunicipalDocumentoRepository $documentoRepository): Response {
  262.         
  263.         if ($documento) {
  264.             $conselho $documento->getConselhoMunicipal();
  265.             $documentoRepository->remove($documentotrue);
  266.             $form $this->createForm(ConselhoMunicipalType::class, $conselho);
  267.             $form->handleRequest($request);
  268.             $nav['dados'] = '';
  269.             $nav['conselho'] = '';
  270.             $nav['arquivos'] = 'show active';
  271.             $this->addFlash('success'"DOCUMENTO EXCLUIDO COM SUCESSO.");
  272.         }
  273.         return $this->renderForm('conselho_municipal/edit.html.twig', [
  274.                     'conselho_municipal' => $conselho,
  275.                     'form' => $form,
  276.                     'nav' => $nav
  277.         ]);
  278.         //return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  279.     }
  280.     /**
  281.      * @IsGranted("ROLE_ADMIN")
  282.      */  
  283.     #[Route('/delete/contato/{id}'name'app_conselho_municipal_contato_delete'methods: ['GET'])]
  284.     public function deleteContato(Request $request,  ConselhoMunicipalContato $contato ConselhoMunicipalContatoRepository $contatoRepository): Response {
  285.         if ($contato) {
  286.             $conselho $contato->getConselhoMunicipal();
  287.             $contatoRepository->remove($contatotrue);
  288.             $form $this->createForm(ConselhoMunicipalType::class, $conselho);
  289.             $form->handleRequest($request);
  290.             $nav['dados'] = '';
  291.             $nav['arquivos'] = '';
  292.             $nav['conselho'] = 'show active';
  293.             $this->addFlash('success'"CONTATO EXCLUIDO COM SUCESSO.");
  294.         }
  295.         return $this->renderForm('conselho_municipal/edit.html.twig', [
  296.                     'conselho_municipal' => $conselho,
  297.                     'form' => $form,
  298.                     'nav' => $nav
  299.         ]);
  300.         //return $this->redirectToRoute('app_subvencao_social_e_index', [], Response::HTTP_SEE_OTHER);
  301.     }     
  302.     
  303.     private function verifica($str$pagina$page null) {
  304.         if ($str == "anterior") {
  305.             if ($pagina 1) {
  306.                 return 1;
  307.             }
  308.         }
  309.         if ($str == "proxima") {
  310.             if ($pagina $page) {
  311.                 return $page;
  312.             }
  313.             return $pagina;
  314.         }
  315.         if ($str == "ultima") {
  316.             if($page == "all"){
  317.                 $page $pagina;
  318.             }
  319.             $valor intdiv($pagina$page);
  320.             if (($pagina $page) > 0) {
  321.                 return ++$valor;
  322.             } else {
  323.                 return $valor;
  324.             }
  325.         }
  326.     }    
  327. }