Advertisement
Guest User

Untitled

a guest
Jan 14th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.74 KB | None | 0 0
  1. Route::get('teste-processo/{numeroProcesso}', function($numeroProcesso) {
  2.     $servico =  new \SimpleApi\Litispendencia\ReceberDadosClienteServico(
  3.         new \SimpleApi\Litispendencia\ValidarClientesPrecatorioServico);
  4.  
  5.     return response()->json(['message' => $servico->dadosProcesso($numeroProcesso)]);
  6. });
  7.  
  8. ===============================================================================
  9.  
  10. <?php
  11. declare(strict_types=1);
  12.  
  13. namespace SimpleApi\Litispendencia;
  14.  
  15. use SimpleApi\Litispendencia\ValidarClientesPrecatorioServico;
  16.  
  17. class ReceberDadosClienteServico
  18. {
  19.     protected $urlBase = 'https://processual.trf1.jus.br';
  20.  
  21.     protected $urlCpf = 'https://processual.trf1.jus.br/consultaProcessual/parte/listarPorCpfCnpj.php?secao=BA&pg=5&enviar=Pesquisar&cpf_cnpj=';
  22.  
  23.     protected $urlNumeroProceso = 'https://processual.trf1.jus.br/consultaProcessual/processo.php?secao=TRF1&pg=1&enviar=Pesquisar&proc=';
  24.    
  25.     protected $salvarProcessos = [];
  26.    
  27.     const DIRETORIO_COOKIE = '/cookies';
  28.  
  29.     const PROCESSO_NAO_FOI_ENCONTRADO = 'Processo não foi encontrado.';
  30.  
  31.     const SEM_INFORMACOES_PROCESSUAIS = '20001 - pkg_consulta_processual.getdadosprocessuais - 10004 - O processo não possui informações processuais nesta Seção/Subseção Judiciária.';
  32.  
  33.     /**
  34.      * @var ValidarClientesPrecatorioServico
  35.      */
  36.  
  37.      protected $ValidarClientesPrecatorioServico;
  38.  
  39.     public function __construct(ValidarClientesPrecatorioServico $ValidarClientesPrecatorioServico)
  40.     {
  41.         $this->ValidarClientesPrecatorioServico = $ValidarClientesPrecatorioServico;
  42.     }
  43.  
  44.     public function dadosProcesso(string $numeroProcesso)
  45.     {
  46.           if (stristr($numeroProcesso, ': ')) {
  47.             $numeroProcesso = str_replace(': ', '%20', $numeroProcesso);
  48.  
  49.             //var_dump($numeroProcesso);die;
  50.           }
  51.  
  52.           $urlProcesso = "{$this->urlNumeroProceso}{$numeroProcesso}";
  53.           //dd($urlProcesso);
  54.           $caminhoCookieProcesso = $this->getCaminhoCookie();
  55.  
  56.           $htmlCpf = $this->getHtmlComCurl($urlProcesso, $caminhoCookieProcesso);
  57.          
  58.           $divProcessos = $htmlCpf->find('.noticia-letra');
  59.          
  60.           if (empty($divProcessos)) {
  61.             var_dump($urlProcesso);
  62.             var_dump($htmlCpf);die;
  63.         }
  64.        
  65.         if ($this->tratarTexto($divProcessos[0]->children(0)->plaintext) === self::PROCESSO_NAO_FOI_ENCONTRADO) {
  66.          
  67.             return 'processo nao encontrado';
  68.         }
  69.  
  70.         if ($this->tratarTexto($divProcessos[0]->children(0)->plaintext) === self::SEM_INFORMACOES_PROCESSUAIS) {
  71.          
  72.             return 'processo nao encontrado';
  73.         }
  74.  
  75.         dd($divProcessos[0]->children(0));
  76.        
  77.          // Dados do processo
  78.          if (is_null($divProcessos[0]->children(0)->children(1)->children(1))) {
  79.             $abaProcesso = $divProcessos[0]->children(0)->children(1)->children(0)->children(1);
  80.         } else {
  81.             $abaProcesso = $divProcessos[0]->children(0)->children(1)->children(1)->children(1);
  82.         }
  83.  
  84.         $linhasAbaProcesso = $abaProcesso->find('tr');
  85.    
  86.  
  87.         $itensProcesso = [
  88.             'numero-processo' => null,
  89.             'nova-numeracao'  => null,
  90.             'classe' => null,
  91.             'vara' => null,
  92.             'data-de-autuacao' => null,
  93.             'distribuicao' => null,
  94.             'assunto-da-peticao' => null,
  95.             'juiz'  => null,
  96.             'principal' => null,
  97.         ];
  98.  
  99.         foreach ($linhasAbaProcesso as $linhaAbaProcesso) {
  100.          
  101.             switch ($this->tratarTexto($linhaAbaProcesso->children(0)->plaintext)) {
  102.                 case 'Processo:':
  103.                 case 'Processo::':
  104.                     $itensProcesso['numero-processo'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  105.                     break;
  106.                 case 'Nova Numeração:':
  107.                     $itensProcesso['nova-numeracao'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  108.                     break;
  109.                 case 'Classe:':
  110.                     $itensProcesso['classe'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  111.                     break;
  112.                 case 'Vara:':
  113.                     $itensProcesso['vara'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  114.                     break;
  115.                 case 'Data de Autuação:':
  116.                     $itensProcesso['data-de-autuacao'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  117.                     break;
  118.                 case 'Distribuição:':
  119.                     $itensProcesso['distribuicao'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  120.                     break;
  121.                 case 'Assunto da petição':
  122.                     $itensProcesso['assunto-da-peticao'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  123.                     break;
  124.                 case 'Juíz':
  125.                 case 'Juíza':
  126.                     $itensProcesso['juiz'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  127.                     break;
  128.                 case 'Principal':
  129.                     $itensProcesso['principal'] = $this->tratarTexto($linhaAbaProcesso->children(1)->plaintext);
  130.                     break;
  131.             }
  132.         }
  133.  
  134.         return $itensProcesso;
  135.     }
  136.  
  137.     protected function getHtml(string $url): \simple_html_dom
  138.     {
  139.         return file_get_html($url, false, null, 0);
  140.     }
  141.  
  142.       /**
  143.      * @return string
  144.      * @throws \Exception
  145.      */
  146.     protected function getCaminhoCookie(): string
  147.     {
  148.         $cookiesDiretorio = storage_path(self::DIRETORIO_COOKIE);
  149.  
  150.         if (!is_dir($cookiesDiretorio)) {
  151.             mkdir($cookiesDiretorio);
  152.         }
  153.  
  154.         $hoje = (new \DateTime('now'))->format('YmdHisu');
  155.  
  156.         return "{$cookiesDiretorio}/cookie-{$hoje}.txt";
  157.     }
  158.  
  159.     protected function getHtmlComCurl(string $url, string $caminhoCookie): \simple_html_dom
  160.     {
  161.         // Inicializa o objeto CURL
  162.         $curl = curl_init();
  163.  
  164.         // Configurações do CURL
  165.         curl_setopt($curl, CURLOPT_URL, $url);
  166.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  167.         curl_setopt($curl, CURLOPT_COOKIEFILE, $caminhoCookie);
  168.         curl_setopt($curl, CURLOPT_COOKIEJAR, $caminhoCookie);
  169.  
  170.         $resultado = curl_exec($curl);
  171.  
  172.         curl_close($curl);
  173.  
  174.         $html = new \simple_html_dom();
  175.  
  176.         return $html->load($resultado);
  177.     }
  178.  
  179.     protected function removerEspacos(string $string): string
  180.     {
  181.         return trim(str_replace('&nbsp;', '', $string));
  182.     }
  183.  
  184.     protected function tratarTexto(string $string): string
  185.     {
  186.         return $this->removerEspacos(html_entity_decode($string));
  187.     }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement