<?php
/**
 * SAC 2025 - GET RESERVATIONS PRO
 * Lógica de privacidad: Los vecinos ven 'RESERVADO', los dueños y admin ven el nombre real.
 */
require_once 'config.php';

if (!isset($_SESSION['user_id'])) {
    response(["error" => "No autorizado"], 401);
}

$role = $_SESSION['user_role'];
$currentUserId = $_SESSION['user_id'];

try {
    if (in_array($role, ['admin', 'programmer', 'board'])) {
        // Administradores ven todo el detalle nominal y código de propiedad
        $stmt = $pdo->query("SELECT r.*, p.code as propertyCode 
                            FROM reservations r 
                            JOIN properties p ON r.property_id = p.id 
                            ORDER BY r.date DESC");
    } else {
        /**
         * LÓGICA DE PROPIETARIO:
         * 1. Si la reserva es mía (user_id coincide), veo mi nombre.
         * 2. Si la reserva es de otro, veo 'RESERVADO' por privacidad.
         */
        $stmt = $pdo->prepare("SELECT 
                                r.id, r.facility, r.date, r.status, p.code as propertyCode,
                                IF(r.user_id = ?, r.resident_name, 'OCUPADO') as residentName,
                                IF(r.user_id = ?, r.whatsapp, '***') as whatsapp 
                              FROM reservations r
                              JOIN properties p ON r.property_id = p.id
                              WHERE r.status = 'Aprobada' OR r.user_id = ?
                              ORDER BY r.date DESC");
        $stmt->execute([$currentUserId, $currentUserId, $currentUserId]);
    }
    
    $results = $stmt->fetchAll();
    
    // Normalización de tipos para el frontend
    foreach($results as &$row) {
        $row['id'] = (int)$row['id'];
        $row['propertyId'] = isset($row['property_id']) ? (int)$row['property_id'] : null;
    }

    response($results);

} catch (PDOException $e) {
    // Si la tabla no existe o falla la columna user_id, devolvemos array vacío para no romper la UI
    response([]);
}
?>