<?php
error_reporting(E_ALL ^ E_NOTICE);

// Permite la conexi¨®n desde cualquier origen
header("Access-Control-Allow-Origin: *");
// Permite la ejecuci¨®n de los m¨¦todos
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");

// Se incluye el archivo que contiene la clase gen¨¦rica
include_once '../conexion.php';

$bodyRequest = file_get_contents("php://input");
// Decodifica el cuerpo de la solicitud y lo guarda en un array de PHP
$datos = json_decode($bodyRequest, true);

$rows = array();
$sql = "CALL Listar_DetVenta(?)";

// Preparar la sentencia
if ($stmt = mysqli_prepare($conn, $sql)) {
    // Vincular par¨˘metros
    mysqli_stmt_bind_param($stmt, "i", $datos[0]);

    // Ejecutar la sentencia
    if (mysqli_stmt_execute($stmt)) {
        $result = mysqli_stmt_get_result($stmt);

        if (mysqli_num_rows($result) > 0) {
            while ($row = mysqli_fetch_assoc($result)) {
                $rows[] = $row;
            }
            mysqli_free_result($result); // Liberar el resultado
        } else {
            // No se encontraron registros
            $rows = [];
        }
    } else {
        error_response("Error al ejecutar la consulta.");
    }
    mysqli_stmt_close($stmt); // Cerrar la sentencia
} else {
    error_response("Error al preparar la consulta.");
}

// Cerrar la conexi¨®n a la base de datos
mysqli_close($conn);

// Imprimir la respuesta en formato JSON
print_json($rows);

function print_json($data) {
    header("Content-Type: application/json; charset=utf-8");
    echo json_encode($data, JSON_UNESCAPED_UNICODE);

    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            break;
        case JSON_ERROR_DEPTH:
            error_response('Maximum stack depth exceeded');
            break;
        case JSON_ERROR_STATE_MISMATCH:
            error_response('Underflow or the modes mismatch');
            break;
        case JSON_ERROR_CTRL_CHAR:
            error_response('Unexpected control character found');
            break;
        case JSON_ERROR_SYNTAX:
            error_response('Syntax error, malformed JSON');
            break;
        case JSON_ERROR_UTF8:
            error_response('Malformed UTF-8 characters, possibly incorrectly encoded');
            break;
        default:
            error_response('Unknown error');
            break;
    }
}

function error_response($message) {
    http_response_code(500);
    print_json(['error' => $message]);
    exit();
}
?>