<?php
function senior_login($dominio) {

    global $access_token;
    // URL do servidor de login
    $url = "https://platform.senior.com.br/auth/LoginServlet";

    // Parâmetros de login

    if ($dominio == 'TST') {
        $data = array(
            'user' => 'Nettcom@transitobrasil.net',
            'password' => 'Nettcom123#',
            'g-recaptcha-response' => '',
            'redirectTo' => 'https://platform.senior.com.br/senior-x/',
            'lng' => '',
            'emailSuffix' => 'transitobrasil.net',
            'expirationRememberMe' => '-1',
            'scope' => ''
        );
    }

    if ($dominio == 'TRD') {
        $data = array(
            'user' => 'admin@trdtransportes.com',
            'password' => '5cekz0ef',
            'g-recaptcha-response' => '',
            'redirectTo' => 'https://platform.senior.com.br/senior-x/',
            'lng' => '',
            'emailSuffix' => 'trdtransportes.com',
            'expirationRememberMe' => '-1',
            'scope' => ''
        );
    }

    // Inicializa cURL
    $curl = curl_init();
    
    // Configuração cURL para requisição POST de login
    curl_setopt($curl, CURLOPT_SSLVERSION, 6);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, true); // Para capturar o cabeçalho com os cookies
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36");
    curl_setopt($curl, CURLOPT_REFERER, $url);

    $response = curl_exec($curl);

    // Verifica se ocorreu algum erro
    if (curl_errno($curl)) {
        echo 'Erro no cURL: ' . curl_error($curl);
    } else {
        // Captura o header para extrair os cookies da requisição POST
        $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
        $header = substr($response, 0, $header_size);
        $body = substr($response, $header_size);

        // Expressão regular para capturar todos os cookies da requisição POST
        preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $header, $matches);

        // Array para armazenar os cookies extraídos da requisição POST
        $cookies = array();
        foreach ($matches[1] as $item) {
            parse_str($item, $cookie);
            if (isset($cookie['com_senior_token'])) {
                // Armazena o cookie específico 'with_senior_token'
                $cookies['com_senior_token'] = $cookie['com_senior_token'];
            }
        }
    }

    // Decodifica o JSON do cookie 'with_senior_token' e coleta o access_token
    $cookie_data = isset($cookies['com_senior_token']) ? json_decode($cookies['com_senior_token'], true) : null;
    $access_token = $cookie_data['access_token'] ?? null;

    // Coleta o access_token diretamente ou define uma mensagem de erro
    $access_token = $cookie_data['access_token'] ?? null;

    // Se não encontrar o access_token, interrompe a execução com erro
    if (!$access_token) {
        die('Erro ao localizar Access Token');
    }

}

function Get_Cotacao($cnpj_remetente, $cnpj_destinatario, $cnpj_pagador, $cep_origem, $cep_destino, $tipo_frete, $peso, $metro_cubico, $qnt_volumes, $valor_mercadoria, $dominio) {

    senior_login($dominio);

    global $access_token;

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/actions/simulaCotacaoFrete";
    global $cookie_value;


    // Array base com todos os campos comuns
    $data = [
        "cnpjRemetente"           => $cnpj_remetente,
        "cnpjDestinatario"        => $cnpj_destinatario,
        "cnpjConsignatario"       => $cnpj_pagador,
        "numeroCepColeta"         => $cep_origem,
        "numeroCepEntrega"        => $cep_destino,
        "tipoFrete"               => $tipo_frete,
        "quantidadePeso"          => $peso,
        "quantidadeMetrosCubicos" => $metro_cubico,
        "quantidadeVolumes"       => $qnt_volumes,
        "valorMercadoria"         => $valor_mercadoria,
        "icmsIncluso"             => 'INCLUSO',
    ];

    // Se o domínio for TRD, adiciona o código da natureza de carga
    if (isset($dominio) && strtoupper($dominio) === 'TRD') {
        $data['codigoNaturezaCarga'] = '2';
    }

    // Finalmente codifica em JSON
    $data = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }
}

function get_id_cotacao($numero_simulacao) {
    
    global $access_token;

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaCotacoesUsuario";
    global $cookie_value;


    // Payload em formato JSON
    $data = json_encode([
        "vencimento"            => null,
        "identificador"         => $numero_simulacao,
        "dataEmissaoInicial"    => null,
        "dataEmissaoFinal"      => null,
        "dataVencimentoInicial" => null,
        "dataVencimentoFinal"   => null,
        "dataAprovacaoInicial"  => null,
        "dataAprovacaoFinal"    => null,
        "codigoCotacao"         => null,
        "situacao"              => null,
        "consignatario"         => null,
        "destinatario"          => null,
        "remetente"             => null,
        "pageRequest"           => [
            "offset"            => 0,
            "size"              => 10
        ]
    ]);


    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }
}

function aprova_cotacao($numero_simulacao, $dominio) {
    
    senior_login($dominio);

    $dados = get_id_cotacao($numero_simulacao);


    if (isset($dados['cotacoesFrete'][0]['id'])) {
        $id_cotacao = $dados['cotacoesFrete'][0]['id'];
    } 

    global $access_token;

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/actions/aprovaCotacaoFrete";
    global $cookie_value;


    // Payload em formato JSON
    $data = json_encode([
        "idCotacaoFrete" => $id_cotacao,
        "email"          => 'valdeir.flima1@gmail.com'
    ]);


    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }
}

function get_cliente_nf($nf, $tipo, $cnpj, $dominio) {
    
    senior_login($dominio);

    global $access_token;

    if ($tipo == 'REMETENTE') {
        $consulta_cnpj_key = "notafiscalEmitente";
    } else {
        $consulta_cnpj_key = "notafiscalTomador";
    }

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaRelatorioDocumentos";

    // Payload em formato JSON
    $data = json_encode([
        "relatorioDocumentoIn"       => [
            "apenasUltimaOcorrencia" => true,
            "conhecimentoEntregue"   => null,
            "conhecimentoFaturado"   => null,
            "notafiscalNumero"       => $nf,
            $consulta_cnpj_key       => $cnpj 
        ],
        "pageRequest" => [
            "offset" => 0,
            "size" => "10"
        ]
    ]);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        return $response;
    }

}
 function get_rastreio($nf, $cnpj, $dominio) {

    senior_login($dominio);

    global $access_token;


    // URL de destino para a requisicao POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/tck/queries/consultaTracking";


    // Payload em formato JSON
    $data = json_encode([

        "fase"                       => null,
        "filial"                     => null,
        "documento"                  => $nf,
        "identificadorCliente"       => $cnpj,
        "tipoDocumento"              => [
            "id"                     => "d38349b8-ff85-9426-1e59-7ae535609344",
            "codigo"                 => "Nota Fiscal",
            "descricao"              => "Nota Fiscal",
            "unico"                  => true,
            "ativo"                  => true,
            "ordenacaoExibeTracking" => 0,
            "createdBy"              => "TMS_START",
            "createdDate"            => "2021-01-12T14:10:59.138015Z",
            "_discriminator"         => "tipoDocumento"],
        "pageRequest"                => [
            "offset"                 => 0,
            "size"                   => 10
        ]
    ]);

        // Inicializa o cURL
        $ch = curl_init($url);

        // Define as opções do cURL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "Content-Type: application/json",
            "Authorization: Bearer $access_token",
            "Accept: application/json, text/plain, */*",
            "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
        ]);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
        // Executa a requisição
        $response = curl_exec($ch);
    
        // Checa por erros
        if(curl_errno($ch)) {
            echo 'Erro: ' . curl_error($ch);
        } else {
            // Exibe a resposta da API de tracking
            $data = json_decode($response, true);
            $id   = $data['listaTracking'][0]['id'];
            $previsao_entrega = $data['listaTracking'][0]['dataPrevisaoEntrega'];

            //
            // 1) chama a API de trackingFase (GET)
            //
            $urlFase = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/tck/entities/trackingFase"
                    . "?size=10&offset=0"
                    . "&filter=executada%20eq%20true%20and%20tracking%20eq%20%27{$id}%27"
                    . "&orderby=dataExecucao";

            $ch = curl_init($urlFase);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HTTPHEADER, [
                "Content-Type: application/json",
                "Authorization: Bearer $access_token",
                "Accept: application/json, text/plain, */*",
                "User-Agent: Mozilla/5.0"
            ]);
            $respFase = curl_exec($ch);
            if (curl_errno($ch)) {
                throw new \Exception('Erro na fase: ' . curl_error($ch));
            }
            curl_close($ch);

            $dataFase = json_decode($respFase, true);

            //
            // 2) chama a API de buscaDocumentosEEnvolvidos (POST)
            //
            $urlDocs = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/tck/queries/buscaDocumentosEEnvolvidos";
            $payload = json_encode([
                "trackingId" => $id
            ]);

            $ch2 = curl_init($urlDocs);
            curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch2, CURLOPT_POST, true);
            curl_setopt($ch2, CURLOPT_POSTFIELDS, $payload);
            curl_setopt($ch2, CURLOPT_HTTPHEADER, [
                "Content-Type: application/json",
                "Authorization: Bearer $access_token",
                "Accept: application/json"
            ]);
            $respDocs = curl_exec($ch2);
            if (curl_errno($ch2)) {
                throw new \Exception('Erro nos documentos: ' . curl_error($ch2));
            }
            curl_close($ch2);

            $dataDocs = json_decode($respDocs, true);

            //
            // 3) “Merge” no array original e retorna
            //
            $data['trackingFase']             = $dataFase;   // ou use a chave que preferir
            $data['documentosEEnvolvidos']    = $dataDocs;
            $data['previsao_entrega']         = $previsao_entrega;
            return $data;
        }

 }

 function get_id_cte($cte) {
    
    global $access_token;

    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-3 month');

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaRelatorioDocumentos";

    // Payload em formato JSON
    $data = json_encode([
        "relatorioDocumentoIn" => [
            "apenasUltimaOcorrencia"     => true,
            "conhecimentoEntregue"       => null,
            "conhecimentoFaturado"       => null,
            "conhecimentoDataEmissaoIni" => $dataInicio->format('Y-m-d\T00:00:00.000\Z'),
            "conhecimentoDataEmissaoFim" => $dataFim->format('Y-m-d\T23:59:59.000\Z'),
            "notafiscalNumero"         => $cte
        ],
        "pageRequest" => [
            "offset" => 0,
            "size" => 99
        ]
    ]);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        $conhecimentoId = $data['documentos'][0]['conhecimentoId'] ?? null;
        return $conhecimentoId;

    }

}


 function get_cte($cte, $dominio) {

    senior_login($dominio);

    $id_ctrc = get_id_cte($cte);

    global $access_token;

    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-4 month');

    // URL de destino para a requisicao POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/actions/buscaUrlDownloadArquivo";


    // Payload em formato JSON
    $data = json_encode([
        "documentos" => [
            [
                "idDocumento" => $id_ctrc,
                "tipoDownload" => "DACTE"
            ]
        ],
        "agruparPDF" => false
    ]);
    
    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    // Executa a requisição
        $response = curl_exec($ch);
    
    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {

        $data = json_decode($response, true);

        $url = $data['retorno'][0]['urlAcesso'];
        $nome_arq = $data['retorno'][0]['nomeArquivo'];
        
        // Caminho para salvar o arquivo localmente
        $localFile = "/var/www/html/rel/{$id_ctrc}.pdf";

        // Inicializa o cURL
        $ch = curl_init($url);

        // Configurações do cURL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retorna o resultado como string
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Segue redirecionamentos, se houver
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Desativa verificação de certificado SSL (apenas se necessário)

        // Executa a requisição
        $response = curl_exec($ch);

        // Verifica se houve erro
        if (curl_errno($ch)) {
            echo json_encode(array('error' => 'Arquivo Não Encontrado'));
            exit;
        } else {
            // Salva o conteúdo em um arquivo local
            file_put_contents($localFile, $response);
            return $localFile;
        }
        
    }
    
}


function get_dados_cte($tipo, $cte, $cnpj, $entrega, $faturado, $dominio) {
    
    senior_login($dominio);

    global $access_token;

    if ($tipo == 'REMETENTE') {
        $consulta_cnpj_key = "conhecimentoRemetente";
    } else {
        $consulta_cnpj_key = "conhecimentoDestinatario";
        
    }

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaRelatorioDocumentos";

    // Payload em formato JSON
    $data = json_encode([
        "relatorioDocumentoIn" => [
            "apenasUltimaOcorrencia"     => true,
            "conhecimentoEntregue"       => $entrega,
            "conhecimentoFaturado"       => $faturado,
            "conhecimentoNumero"         => $cte,
            $consulta_cnpj_key           => $cnpj
        ],
        "pageRequest" => [
            "offset" => 0,
            "size" => 99
        ]
    ]);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }

}

function get_dados_cliente($tipo, $cnpj, $entrega, $faturado, $dominio) {
    
    senior_login($dominio);

    global $access_token;

    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-1 month');

    if ($tipo == 'REMETENTE') {
        $consulta_cnpj_key = "notafiscalEmitente";
    } else {
        $consulta_cnpj_key = "notafiscalTomador";
        
    }


    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaRelatorioDocumentos";

    // Payload em formato JSON
    $data = json_encode([
        "relatorioDocumentoIn" => [
            "apenasUltimaOcorrencia"     => true,
            "conhecimentoEntregue"       => $entrega,
            "conhecimentoFaturado"       => $faturado,
            "conhecimentoDataEmissaoIni" => $dataInicio->format('Y-m-d\T00:00:00.000\Z'),
            "conhecimentoDataEmissaoFim" => $dataFim->format('Y-m-d\T23:59:59.000\Z'),
            $consulta_cnpj_key           => $cnpj
        ],
        "pageRequest" => [
            "offset" => 0,
            "size" => 99
        ]
    ]);


    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }

}


function get_id_fatura($fatura) {

    global $access_token;

    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-1 month');

    // URL de destino para a requisicao POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaFaturas";


    // Payload em formato JSON
    $data = json_encode([
        "faturaNumero" => $fatura,
        "pageRequest"  => [
            "offset"   => 0,
            "size"     => "99"
        ]
    ]);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    // Executa a requisição
        $response = curl_exec($ch);
    
    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        $data = json_decode($response, true);
        $id   = $data['fatura'][0]['id'];
        return $id;   
    }
}


function get_fatura($fatura, $dominio) {

    senior_login($dominio);

    $id_fatura = get_id_fatura($fatura);

    global $access_token;

    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-1 month');

    // URL de destino para a requisicao POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/actions/buscaUrlDownloadArquivo";


    // Payload em formato JSON
    $data = json_encode([
        "documentos" => [
            [
                "idDocumento" => $id_fatura,
                "tipoDownload" => "FaturaPDF"
            ]
        ]
    ]);
    
    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    // Executa a requisição
        $response = curl_exec($ch);
    
    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {

        $data = json_decode($response, true);

        $url = $data['retorno'][0]['urlAcesso'];
        $nome_arq = $data['retorno'][0]['nomeArquivo'];
        
        // Caminho para salvar o arquivo localmente
        $localFile = "/var/www/html/rel/{$id_fatura}.pdf";

        // Inicializa o cURL
        $ch = curl_init($url);

        // Configurações do cURL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retorna o resultado como string
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Segue redirecionamentos, se houver
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Desativa verificação de certificado SSL (apenas se necessário)

        // Executa a requisição
        $response = curl_exec($ch);

        // Verifica se houve erro
        if (curl_errno($ch)) {
            //echo "Erro no cURL: " . curl_error($ch);
        } else {
            // Salva o conteúdo em um arquivo local
            file_put_contents($localFile, $response);
            return $localFile;
        }
        
    }
    
}



function get_id_comprovante($cte, $dataEmissao, $access_token) {
    // URL de destino para a requisicao POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaComprovantesEntregaConhecimentos";

    // Payload em formato JSON
    $data = json_encode([
        "filtros" => [
            "numeroConhecimento" => $cte,
            "dtEmissaoFimConhecimento" => $dataEmissao,
            "dtEmissaoIniConhecimento" => $dataEmissao

        ],
        "pageRequest"  => [
            "offset"   => 0,
            "size"     => "99"
        ]
    ]);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    // Executa a requisição
    $response = curl_exec($ch);
    
    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        $data = json_decode($response, true);
        $id   = $data['comprovantes'][0]['id'];
        return $id;   
    }
}

function get_comprovante($cte, $dataEmissao, $dominio) {
    senior_login($dominio);
    global $access_token;

    $id_comprovante = get_id_comprovante($cte, $dataEmissao, $access_token);

    if (empty($id_comprovante)){
        return "Arquivo nao encontrado";
    }
    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-1 month');

    // URL de destino para a requisicao POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/actions/buscaUrlDownloadArquivo";


    // Payload em formato JSON
    $data = json_encode([
        "documentos" => [
            [
                "idDocumento" => $id_comprovante,
                "tipoDownload" => "CteComprovanteEntrega"
            ]
        ]
    ]);
    
    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    
    // Executa a requisição
        $response = curl_exec($ch);
    
    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {

        $data = json_decode($response, true);

        $url = $data['retorno'][0]['urlAcesso'];
        $nome_arq = $data['retorno'][0]['nomeArquivo'];
        
        // Caminho para salvar o arquivo localmente
        $localFile = "/var/www/html/rel/{$id_comprovante}";

        // Inicializa o cURL
        $ch = curl_init($url);

        // Configurações do cURL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retorna o resultado como string
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Segue redirecionamentos, se houver
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Desativa verificação de certificado SSL (apenas se necessário)

        // Executa a requisição
        $response = curl_exec($ch);

        // Verifica se houve erro
        if (curl_errno($ch)) {
            echo "Erro no cURL: " . curl_error($ch);
        } else {
            // Salva o conteúdo em um arquivo local
            file_put_contents($localFile, $response);
            return $localFile;
        }
        
    }
    
}



function get_cnpj_emitente($nf, $cnpj, $tipo, $dominio) {
    
    senior_login($dominio);

    global $access_token;

    if ($tipo == 'REMETENTE') {
        $consulta_cnpj_key = "notafiscalEmitente";
    } else {
        $consulta_cnpj_key = "notafiscalTomador";
        
    }

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaRelatorioDocumentos";

    // Payload em formato JSON
    $data = json_encode([
        "relatorioDocumentoIn" => [
            "apenasUltimaOcorrencia"     => true,
            "conhecimentoEntregue"       => null,
            "conhecimentoFaturado"       => null,
            "notafiscalNumero"           => $nf,
            $consulta_cnpj_key           => $cnpj
        ],
        "pageRequest" => [
            "offset" => 0,
            "size" => 10
        ]
    ]);

    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }

}




function get_dados_cliente_fatura($tipo, $cnpj, $dominio) {
    
    senior_login($dominio);

    global $access_token;

    // Data atual
    $dataFim = new DateTime(); // Hoje

    // Data de um mês atras
    $dataInicio = new DateTime();
    $dataInicio->modify('-1 month');

    if ($tipo == 'REMETENTE') {
        $consulta_cnpj_key = "notafiscalEmitente";
    } else {
        $consulta_cnpj_key = "notafiscalTomador";
        
    }

    // URL de destino para a requisição POST
    $url = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/tms/documentos/queries/buscaRelatorioDocumentos";

    // Payload em formato JSON
    $data = json_encode([
        "relatorioDocumentoIn" => [
            "apenasUltimaOcorrencia"     => true,
            "conhecimentoFaturado"       => true,
            "conhecimentoDataEmissaoIni" => $dataInicio->format('Y-m-d\T00:00:00.000\Z'),
            "conhecimentoDataEmissaoFim" => $dataFim->format('Y-m-d\T23:59:59.000\Z'),
            $consulta_cnpj_key           => $cnpj
        ],
        "pageRequest" => [
            "offset" => 0,
            "size" => 99
        ]
    ]);


    // Inicializa o cURL
    $ch = curl_init($url);

    // Define as opções do cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: Bearer $access_token",
        "Accept: application/json, text/plain, */*",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Executa a requisição
    $response = curl_exec($ch);

    // Checa por erros
    if(curl_errno($ch)) {
        echo 'Erro: ' . curl_error($ch);
    } else {
        // Exibe a resposta da API
        $data = json_decode($response, true);
        return $data;
    }

}
