src/Controller/DepartamentoPessoalController.php line 62

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\DepartamentoPessoal;
  4. use App\Form\DepartamentoPessoalType;
  5. use App\Repository\DepartamentoPessoalRepository;
  6. use App\Repository\DepartamentoPessoalRepositoryView;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  12. use Dompdf\Dompdf;
  13. #[Route('/departamento/pessoal')]
  14. class DepartamentoPessoalController extends AbstractController
  15. {
  16.     
  17.     /**
  18.      * @IsGranted("ROLE_ADMIN")
  19.      */        
  20.     
  21.     
  22.     #[Route('/'name'app_departamento_pessoal_index'methods: ['GET'])]
  23.     public function index(DepartamentoPessoalRepositoryView $departamentoPessoalRepository,Request $request): Response
  24.     {               
  25.         $filter['tipo'] = $request->get('tipo') ?: '';
  26.         $filter['descricao'] = $request->get('descricao') ?: '';
  27.         $filter['pagina'] = $request->get('pagina') ?: 1;
  28.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  29.         $filter['primeira'] = 1;
  30.         $filter['total_registros'] = $departamentoPessoalRepository->filterGridTotal($filter);
  31.         $filter['page'] = $request->get('page') ?: 10;
  32.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  33.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  34.         $filter['dataInicial'] = '';
  35.         $filter['dataFinal'] = '';   
  36.             
  37.             
  38.             return $this->render('departamento_pessoal/index.html.twig', [
  39.                         'filtro' => $filter,
  40.                         'pessoal' => $departamentoPessoalRepository->filterGrid($filter),
  41.             ]);         
  42.     }
  43.     /**
  44.      * @IsGranted("ROLE_ADMIN")
  45.      */         
  46.     #[Route('/movimentacoes'name'app_departamento_pessoal_movimentacoes'methods: ['GET'])]
  47.     public function movimentacoes(DepartamentoPessoalRepository $departamentoPessoalRepository,Request $request): Response
  48.     {               
  49.         $filter['codigo'] = $request->get('codigo') ?: '';
  50.         $lista $departamentoPessoalRepository->findBy(array('codigo'=>$request->get('codigo')),array('data'=>'ASC'));
  51.             
  52.             
  53.             return $this->render('departamento_pessoal/index_movimentacoes.html.twig', [
  54.                         'lista' => $lista,
  55.             ]);         
  56.     }    
  57.     
  58.     #[Route('/relatorio'name'app_departamento_pessoal_relatorio'methods: ['GET'])]
  59.     public function relatorio(DepartamentoPessoalRepositoryView $departamentoPessoalRepositoryRequest $request): Response {           
  60.         $filter['tipo'] = $request->get('tipo') ?: '';
  61.         $filter['descricao'] = $request->get('descricao') ?: '';
  62.         $filter['pagina'] = $request->get('pagina') ?: 1;
  63.         $filter['anterior'] = $this->verifica('anterior', ($filter['pagina']));
  64.         $filter['primeira'] = 1;
  65.         $filter['total_registros'] = $departamentoPessoalRepository->filterGridTotal($filter);
  66.         $filter['page'] = $request->get('page') ?: 10;
  67.         $filter['ultima'] = $this->verifica('ultima'$filter['total_registros'],$filter['page']);        
  68.         $filter['proxima'] = $this->verifica('proxima', ($filter['pagina']), $filter['ultima']);        
  69.         $filter['dataInicial'] = '';
  70.         $filter['dataFinal'] = '';  
  71.         
  72.         if ($request->get('impressao')) {
  73.             $filter['page'] = 'all';
  74.             if ($request->get('pdf')) {
  75.                 $html $this->renderView('departamento_pessoal/impressao_pdf.html.twig', [
  76.                     'filtro' => $filter,
  77.                     'lista' => $departamentoPessoalRepository->filterGrid($filter),
  78.                 ]);
  79.                 $dompdf = new Dompdf();
  80.                 $dompdf->setPaper('A4''landscape');
  81.                 $dompdf->set_option("isPhpEnabled"true);
  82.                 $options $dompdf->getOptions();
  83.                 $options->setDefaultFont('Courier');
  84.                 $dompdf->setOptions($options);
  85.                 $dompdf->loadHtml($html);
  86.                 $dompdf->render();
  87.                 return new Response(
  88.                         $dompdf->stream('resume', ["Attachment" => false]),
  89.                         Response::HTTP_OK,
  90.                         ['Content-Type' => 'application/pdf']
  91.                         );
  92.             }elseif($request->get('excel')){ 
  93.             $lista =$departamentoPessoalRepository->filterGrid($filter); 
  94.             $titulos = array("Nome","Matrícula","Cargo","Carga horária","Atribuição","Ativo");
  95.                 $rows[] = implode(';'$titulos);
  96.                 
  97.                 foreach ($lista as $value) {
  98.                     $data = array($value->getNome(), $value->getMatricula() , $value->getCargo(), $value->getCargaHoraria(),$value->getAtribuicao(),$value->getAtivo());
  99.                     $rows[] = implode(';'$data);
  100.                 }    
  101.                 
  102.                 $content implode("\n"$rows);
  103.                 $response = new Response($content);
  104.                 $response->headers->set('Content-Type''text/csv');
  105.                 return $response;
  106.             }else{
  107.                 
  108.                 return $this->render('departamento_pessoal/impressao.html.twig', [
  109.                             'filtro' => $filter,
  110.                             'lista' => $departamentoPessoalRepository->filterGrid($filter),
  111.                 ]);
  112.             }
  113.         }
  114.         
  115.         return $this->render('departamento_pessoal/departamento_pessoal.html.twig', [
  116.                     'filtro' => $filter,
  117.                     'lista' => $departamentoPessoalRepository->filterGrid($filter),
  118.         ]);
  119.     } 
  120.     
  121.     private function verifica($str$pagina$page null) {
  122.         if ($str == "anterior") {
  123.             if ($pagina 1) {
  124.                 return 1;
  125.             }
  126.         }
  127.         if ($str == "proxima") {
  128.             if ($pagina $page) {
  129.                 return $page;
  130.             }
  131.             return $pagina;
  132.         }
  133.         if ($str == "ultima") {
  134.             if($page == "all"){
  135.                 $page $pagina;
  136.             }
  137.             $valor intdiv($pagina$page);
  138.             if (($pagina $page) > 0) {
  139.                 return ++$valor;
  140.             } else {
  141.                 return $valor;
  142.             }
  143.         }
  144.     }    
  145.     /**
  146.      * @IsGranted("ROLE_ADMIN")
  147.      */ 
  148.     #[Route('/new'name'app_departamento_pessoal_new'methods: ['GET''POST'])]
  149.     public function new(Request $requestDepartamentoPessoalRepository $departamentoPessoalRepository): Response
  150.     {
  151.         $departamentoPessoal = new DepartamentoPessoal();
  152.         $form $this->createForm(DepartamentoPessoalType::class, $departamentoPessoal);
  153.         $form->handleRequest($request);
  154.         if ($form->isSubmitted() && $form->isValid()) {
  155.             $departamentoPessoalRepository->save($departamentoPessoaltrue);
  156.             return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
  157.         }
  158.         return $this->renderForm('departamento_pessoal/new.html.twig', [
  159.             'departamento_pessoal' => $departamentoPessoal,
  160.             'form' => $form,
  161.         ]);
  162.     }
  163.     /**
  164.      * @IsGranted("ROLE_ADMIN")
  165.      */     
  166.     #[Route('/{id}'name'app_departamento_pessoal_show'methods: ['GET'])]
  167.     public function show(DepartamentoPessoal $departamentoPessoal): Response
  168.     {
  169.         return $this->render('departamento_pessoal/show.html.twig', [
  170.             'departamento_pessoal' => $departamentoPessoal,
  171.         ]);
  172.     }
  173.     
  174.     #[Route('/relatorio/movimentacao/'name'app_departamento_pessoal_movimentacao'methods: ['GET'])]
  175.     public function movimentacao(Request $requestDepartamentoPessoalRepository $departamentoPessoalRepository): Response
  176.     {
  177.         $lista $departamentoPessoalRepository->findBy(array('codigo'=>$request->get('codigo')),array('data'=>'ASC'));
  178.         return $this->render('departamento_pessoal/impressao_movimentacao.html.twig', [
  179.             'lista' => $lista
  180.         ]);
  181.     }    
  182.     /**
  183.      * @IsGranted("ROLE_ADMIN")
  184.      */ 
  185.     #[Route('/{id}/edit'name'app_departamento_pessoal_edit'methods: ['GET''POST'])]
  186.     public function edit(Request $requestDepartamentoPessoal $departamentoPessoalDepartamentoPessoalRepository $departamentoPessoalRepository): Response
  187.     {
  188.         $form $this->createForm(DepartamentoPessoalType::class, $departamentoPessoal);
  189.         $form->handleRequest($request);
  190.         if ($form->isSubmitted() && $form->isValid()) {
  191.             $departamentoPessoalRepository->save($departamentoPessoaltrue);
  192.             return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
  193.         }
  194.         return $this->renderForm('departamento_pessoal/edit.html.twig', [
  195.             'departamento_pessoal' => $departamentoPessoal,
  196.             'form' => $form,
  197.         ]);
  198.     }
  199.     /**
  200.      * @IsGranted("ROLE_ADMIN")
  201.      */ 
  202.     #[Route('/{id}'name'app_departamento_pessoal_delete'methods: ['POST'])]
  203.     public function delete(Request $requestDepartamentoPessoal $departamentoPessoalDepartamentoPessoalRepository $departamentoPessoalRepository): Response
  204.     {
  205.         if ($this->isCsrfTokenValid('delete'.$departamentoPessoal->getId(), $request->request->get('_token'))) {
  206.             $departamentoPessoalRepository->remove($departamentoPessoaltrue);
  207.         }
  208.         return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
  209.     }
  210.     /**
  211.      * @IsGranted("ROLE_ADMIN")
  212.      */         
  213.     #[Route('/importar/dados'name'app_departamento_pessoal_inport'methods: ['GET'])]
  214.     public function import(Request $requestDepartamentoPessoalRepository $departamentoPessoal): Response {       
  215.         
  216.        // if($departamentoPessoal->findOneBy(array('mes'=>$request->get('mes'),$request->get('ano'))) != NULL){
  217.       //      $this->addFlash('errors', "O MÊS DE " . $request->get('mes') . " DO ANO $request->get('ano')  JÁ FOI IMPORTADO ANTERIORMENTE.");
  218.       //      return $this->redirectToRoute('app_conta_bancaria_index', [], Response::HTTP_SEE_OTHER);
  219.      //   }
  220.             $url "http://143.255.241.145:8000/api/employees/moviments?institution=1&month=".$request->get('mes')."&year=".$request->get('ano');
  221.                        
  222.             $ch curl_init();
  223.             curl_setopt($chCURLOPT_URL$url);
  224.             curl_setopt($chCURLOPT_RETURNTRANSFER1);
  225.             $lista json_decode(curl_exec($ch), true);
  226.             curl_close($ch);
  227.             $contador 0;        
  228.             if (is_array($lista)) {
  229.                 
  230.                 foreach ($lista as $item) {
  231.                     if((($item['mes'] == ltrim(substr($item['admissao'],5,2),0)) and ($item['ano'] == substr($item['admissao'],0,4)))  or (($item['mes'] == ltrim(substr($item['exonerado'],5,2),0)) and ($item['ano'] == substr($item['exonerado'],0,4))) ){
  232.                         $contador++;
  233.                         $pessoa = new DepartamentoPessoal();
  234.                         $pessoa->setAdministracao($item["administracao"]);
  235.                         $pessoa->setNome($item['nome']);
  236.                         $pessoa->setCodigo($item['id']);
  237.                         $pessoa->setMatricula($item['matricula']);
  238.                         $pessoa->setCargo($item['cargo_funcao']);                             
  239.                         $pessoa->setVinculo($item['vinculo']);
  240.                         $pessoa->setCargaHoraria($item['carga_horaria']);
  241.                         $pessoa->setLotacao($item['lotacao']);             
  242.                         $pessoa->setCedido($item['cedido']);
  243.                         $pessoa->setJustificativa($item['justificativa']);                                
  244.                         
  245.                         if ($item['mes'] == ltrim(substr($item['admissao'],5,2),0)){
  246.                             $pessoa->setTipo(1);//GRAVA 1 PARA ADMISSÃO
  247.                             $pessoa->setAtivo("A");
  248.                             $pessoa->setData(date_create($item['admissao']));
  249.                             
  250.                         }elseif($item['mes'] == ltrim(substr($item['exonerado'],5,2),0)){
  251.                             $pessoa->setTipo(2);//GRAVA 2 PARA EXONERAÇÃO
  252.                             $pessoa->setAtivo("D");
  253.                             $pessoa->setData(date_create($item['exonerado']));
  254.                         }
  255.                         $departamentoPessoal->save($pessoa,false);
  256.                     }
  257.                     //$pessoa->setContratoEstagio($item['contratoEstagio']);
  258.                     //$pessoa->setAposentado($item['aposentado']);
  259.                     //$pessoa->setAtribuicao($item['atribuicao']);   
  260.                     //$pessoa->setFuncao($item['funcao']);
  261.                     //$pessoa->setEspecieContratacao($item['especieContratacao']);
  262.                     //$pessoa->setRegimeAposentadoria($item['regimeAposentadoria']);
  263.                    // $pessoa->setLeiAtribuicao($item['leiAtribuicao']);
  264.                    // $pessoa->setGraduacao($item['graduacao']);
  265.                    // $pessoa->setLeiCargo($item['leiCargo']);
  266.                 }
  267.                  $departamentoPessoal->flush();
  268.             }
  269.             if($contador == 0){
  270.                 $this->addFlash('warning'"NENHUM REGISTRO FOI IMPORTADO.");
  271.             }else{
  272.                 $departamentoPessoal->flush();            
  273.                 $this->addFlash('success'"OS REGISTROS FORAM IMPORTADOS COM SUCESSO.");            
  274.             }
  275.             return $this->redirectToRoute('app_departamento_pessoal_index', [], Response::HTTP_SEE_OTHER);
  276.     }
  277.     
  278. }