<?php





//opcion 2////////////////////////////////////////////////////////////////////



// Consulta SQL para obtener la factura
$facturaQuery = "SELECT `userApi`, `passApi`, facturas.factura, nit,bodegaEm
    FROM `facturas`
    INNER JOIN empresa ON facturas.idbodegaF = empresa.bodegaEm   
    WHERE tipoFactura='Electronica' AND EstadoEjecucion='1' AND cufe='0' AND facturas.devolucion='0' AND ActivarFacturacionElectronica=1 AND Pos_Electronico='0'
    ORDER BY RAND()
    LIMIT 1";

// Ejecutar la consulta y obtener el resultado
$resultado = $conectar->query($facturaQuery);

// Verificar si se obtuvo algún resultado
if ($resultado->num_rows > 0) {
    // Obtener la fila de la consulta
    $fila = $resultado->fetch_assoc();

    // Variables obtenidas de la consulta
    $userrApi = $fila["userApi"];
    $passApi = $fila["passApi"];
    $factura = $fila["factura"];
    $nitEmpresa = $fila["nit"];
    $bodega=$fila["bodegaEm"];

    // URL para el login y obtener el token
    $token = getToken($userrApi, $passApi,$bodega);

    // URL para obtener el estado de la factura
    $facturaUrl = "https://csi.clarisa.co:8443/facturas/rest/api/v1/obtenerEstadoFactura?nit=$nitEmpresa&numeroDocumentoComercial=$factura";

   $options = array(
    'http' => array(
        'method' => 'GET',
        'header' => "Content-Type: application/json\r\n" .
                    "Authorization: $token"
    )
);

$context = stream_context_create($options);
$response = file_get_contents($facturaUrl, false, $context);

    // Decodificar la respuesta JSON
    $result = json_decode($response, true);

    // Verificar si la solicitud fue exitosa
    if ($result["success"] == true) {
        $mensa = $result["data"]["estado"];
        $cufe = $result["data"]["cufe"];
        if ($mensa == "REPORTADA_DIAN") {
            // Actualizar la factura en la base de datos
            $conectar->query("UPDATE `facturas` SET 
                `cufe`='$cufe', `mensajeProveTecno`='Factura Creada Con exito' WHERE factura='$factura'");




    /// Registro documento electrónico
    // $fecha=date('Y-m-d');
    // $nit = $nitEmpresa ;
    // $nombre = $userrApi;
    // $age = date('Y', strtotime($fecha));  // Extrae el año
    // $mes = date('m', strtotime($fecha));  // Extrae el mes
    
    // $url = "https://gestion.posnube.xyz/api/electro/$nit/$nombre/$age/$mes";
    
    // // Inicializar cURL
    // $ch = curl_init($url);
    
    // // Configuración de la solicitud cURL
    // curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Obtener la respuesta si es necesario (aunque no la usaremos)
    // curl_setopt($ch, CURLOPT_HTTPGET, true); // Especificar que es una solicitud GET
    // curl_setopt($ch, CURLOPT_FAILONERROR, false); // No detiene el script en caso de error
    // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Opcional: Ignorar problemas con certificados SSL
    
    // // Ejecutar la solicitud (sin necesidad de almacenar la respuesta)
    // curl_exec($ch);
    
    // // Cerrar la sesión cURL
    // curl_close($ch);
    
    //fin registro documentos electrónicos



        } else {
            // Actualizar la factura en la base de datos
            //  if ($mensa == "RECHAZADA"){
                
                $conectar->query("UPDATE `facturas` SET 
                `mensajeProveTecno`='$mensa',`EstadoEjecucion`='2' WHERE factura='$factura'");
                
            //  }else{
            //     $conectar->query("UPDATE `facturas` SET 
            //     `mensajeProveTecno`='$mensa',`EstadoEjecucion`='2' WHERE factura='$factura'");
            //  }
           
        }


        echo( $mensa." ".$factura);
    }else {
        $conectar->query("UPDATE `facturas` SET 
        `EstadoEjecucion`='2' WHERE factura='$factura'");
        
        die("error en factura".$factura);
    }
}

// Función para obtener el token
function getToken($username, $password,$bodega)
{
    if(isset($_SESSION[$bodega]["toke"])){
        $token=$_SESSION[$bodega]["toke"];
        return $token;
    } else{
    // URL para el login
    $loginUrl = "https://csi.clarisa.co:8443/seguridad/rest/api/v1/login/";

    // Datos para el login
    $data = array(
        'usuario' => $username,
        'contrasenia' => $password
    );

    // Configuración para la solicitud
    $options = array(
        'http' => array(
            'header' => "Content-type: application/json",
            'method' => 'POST',
            'content' => json_encode($data)
        )
    );

    $context = stream_context_create($options);
    $response = file_get_contents($loginUrl, false, $context);

    if ($response === FALSE) {
        die('Error al realizar la solicitud de token.');
    }

    $result = json_decode($response, true);
    
    //$_SESSION["toke"]= $result["data"]["token"];
    $_SESSION[$bodega]=[
        "toke" => $result["data"]["token"]
    ];
    return $result["data"]["token"];
}
}

?>