<?php
require_once '/var/www/cgi/lib/senior.php';
header("Content-Type: application/json");
$request_headers = getallheaders();

$auth = false;
if((isset($request_headers['username']) && $request_headers['username'] == 'nettcom') && (isset($request_headers['secret']) && $request_headers['secret'] == 'teste@@') ) $auth = true;

function write_log($data, $response) {
    $log_dir = '/var/www/cgi/logs/';
    $log_file = $log_dir . 'cotacao_' . date('Ymd') . '.log';
    
    $log_entry = "=========================\n";
    $log_entry .= "Data: " . date('Y-m-d H:i:s') . "\n";
    $log_entry .= "Requisição: " . json_encode($data) . "\n";
    $log_entry .= "Resposta: " . $response . "\n";
    $log_entry .= "=========================\n\n";

    file_put_contents($log_file, $log_entry, FILE_APPEND);
}

if($auth){
    $cnpj_remetente    = trim($_GET['cnpj_remetente']); 
    $cnpj_destinatario = trim($_GET['cnpj_destinatario']); 
    $cnpj_pagador      = trim($_GET['cnpj_pagador']); 
    $cep_origem        = trim($_GET['cep_origem']); 
    $cep_destino       = trim($_GET['cep_destino']); 
    $tipo_frete        = trim($_GET['tipo_frete']); 
    $peso              = trim($_GET['peso']); 
    $m3                = trim($_GET['m3']); 
    $qnt_volumes       = trim($_GET['qnt_volumes']); 
    $valor_mercadoria  = trim($_GET['valor_mercadoria']); 
    $dominio           = trim($_GET['dominio']);

    $request_data = array(
        'cnpj_remetente' => $cnpj_remetente,
        'cnpj_destinatario' => $cnpj_destinatario,
        'cnpj_pagador' => $cnpj_pagador,
        'cep_origem' => $cep_origem,
        'cep_destino' => $cep_destino,
        'tipo_frete' => $tipo_frete,
        'peso' => $peso,
        'm3' => $m3,
        'qnt_volumes' => $qnt_volumes,
        'valor_mercadoria' => $valor_mercadoria,
        'dominio' => $dominio
    );

    if ($tipo_frete == "1"){
        $tipo_frete = "PAGO";
    } elseif ($tipo_frete == "2") {
        $tipo_frete = "A_PAGAR";
    } else {
        $response = json_encode(['status' => 'failed', 'message' => 'Tipo Invalido']);
        write_log($request_data, $response);
        die($response);
    }

    $m3 = str_replace(',', '.', $m3);

    $data = Get_Cotacao($cnpj_remetente, $cnpj_destinatario, $cnpj_pagador, $cep_origem, $cep_destino, $tipo_frete, $peso, $m3, $qnt_volumes, $valor_mercadoria, $dominio);

    $sit_error = $data['errorCode'];
    if ($sit_error == 400) {
        $return_array = array(
            'status' => 'failed',
            'message' => $data['message']
        );
        $jsonData = json_encode($return_array);
        echo($jsonData);
        #http_response_code(400);

        write_log($request_data, $jsonData);
        return true;
    }

    $sit_error = $data['cotacaoFrete']['situacao'];

    if ($sit_error == 'ERRO_SIMULACAO') {
        $return_array = array(
            'status' => 'failed',
            'message' => $data['cotacaoFrete']['erroProcesso']
        );
        $jsonData = json_encode($return_array);
        echo($jsonData);
        #http_response_code(400);

        write_log($request_data, $jsonData);
        return true;
    }

    if (!empty($cod_error) || !empty($data['message'])) {
        $return_array = array(
            'status' => 'failed',
            'message' => $data['message']
        );
        $jsonData = json_encode($return_array);
        echo($jsonData);
        #http_response_code(400);

        write_log($request_data, $jsonData);
        return true;
    } else {
        $dataIso = $data['cotacaoFrete']['dataValidade'];
        $prazo = $data['cotacaoFrete']['percursoOperacional']['numeroDiasEntrega'];
        $date = new DateTime($dataIso);
        $dataFormatada = $date->format('d/m/Y');

        if (isset($data['cotacaoFrete']['valorFrete']) && $data['cotacaoFrete']['valorFrete'] === '') {
            $return_array = array(
                'status' => 'fail',
                'message' => 'Falha ao realizar cotação'
            );
            $jsonData = json_encode($return_array);
            echo($jsonData);

            write_log($request_data, $jsonData);
            return false;
        }

        $return_array = array(
            'status' => 'success',
            'numero_simulacao' => $data['cotacaoFrete']['identificador'],
            'frete' => $data['cotacaoFrete']['valorFrete'],
            'prazo' => $prazo,
            'validade' => $dataFormatada,
            'id_cotacao' => $data['cotacaoFrete']['id']
        );
        $jsonData = json_encode($return_array);
        echo($jsonData);

        write_log($request_data, $jsonData);
        return true;
    }
} else {
    $response = json_encode(array('error' => 'Unauthorized access'));
    echo $response;

    write_log(['auth' => 'failed'], $response);
    return false;
}
