<?php
/**
 * Este archivo centraliza la lógica para consultar pacientes.
 * VERSIÓN COMPATIBLE CON PHP 5.4 Y SUPERIORES
 */


if (!function_exists('Conectar')) {
    include_once("Conexion.php");
}

/**
 * Función genérica sin declaración estricta de tipos para compatibilidad con PHP 5.4
 */
function consultarPacientes(
    $tablaLocal,
    $columnas,
    $whereClause,
    $params,
    $paramTypes,
    $orderBy,
    &$errorMessage = ''
) {
    
    $Con = Conectar();
    if (!$Con) {
        $errorMessage = "Error: No se pudo conectar a la base de datos.";
        return false;
    }

    // construir la consulta base
    $sqlBase = "SELECT {$columnas} FROM agenda_citas.paciente p";

    //  Añadir el JOIN si se especificó una tabla local
    if ($tablaLocal) {
        $sqlBase .= " JOIN {$tablaLocal} b ON b.clave_paciente = p.clave_paciente";
    }

    // 3. Ensamblar la consulta final
    $SQL = $sqlBase . " " . $whereClause . " " . $orderBy;

    $stmt = mysqli_prepare($Con, $SQL);

    if (!$stmt) {
        $errorMessage = "Error al preparar la consulta: " . htmlspecialchars(mysqli_error($Con));
        Cerrar($Con);
        return false;
    }

    // Vincular parámetros si existen
    if (!empty($params) && !empty($paramTypes)) {
        // En PHP 5.4 es mejor usar array() en lugar de [] 
        $bind_params = array_merge(array($stmt, $paramTypes), $params);
        $ref_params = array();
        foreach ($bind_params as $key => $value) {
            $ref_params[$key] = &$bind_params[$key];
        }
        call_user_func_array('mysqli_stmt_bind_param', $ref_params);
    }

    // Ejecutar y obtener resultados
    if (!mysqli_stmt_execute($stmt)) {
        $errorMessage = "Error al ejecutar la consulta: " . htmlspecialchars(mysqli_stmt_error($stmt));
        mysqli_stmt_close($stmt);
        Cerrar($Con);
        return false;
    }

    $Resultados = mysqli_stmt_get_result($stmt);
    
    // Obtener los datos (Usamos while tradicional para compatibilidad con PHP 5.4)
    $datos = array();
    if ($Resultados) {
        while ($fila = mysqli_fetch_assoc($Resultados)) {
            $datos[] = $fila;
        }
    }

    // 7. Limpiar y cerrar
    mysqli_stmt_close($stmt);
    Cerrar($Con);

    return $datos;
}
?>