<?php
require_once 'config.php';

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

$data = json_decode(file_get_contents("php://input"), true);
$userId = $_SESSION['user_id'];
$role = $_SESSION['user_role'];

// LOGICA DE SEGURIDAD: 
// Si el usuario es propietario o residente, forzamos su propia property_id desde la DB
// Esto evita que un usuario manipule el JSON para enviar un reporte a nombre de otro inmueble.
if (!in_array($role, ['admin', 'programmer', 'board'])) {
    $stmtProp = $pdo->prepare("SELECT property_id FROM residents WHERE user_id = ? LIMIT 1");
    $stmtProp->execute([$userId]);
    $res = $stmtProp->fetch();
    $propertyId = $res['property_id'] ?? null;
} else {
    // Si es admin, puede elegir una propiedad o dejarlo nulo para mantenimiento general
    $propertyId = $data['propertyId'] ?? null;
}

try {
    $stmt = $pdo->prepare("INSERT INTO maintenance_requests 
        (type, description, property_id, requested_by_id, status, request_date, created_at) 
        VALUES (?, ?, ?, ?, ?, ?, NOW())");
    
    $stmt->execute([
        $data['type'],
        $data['description'],
        $propertyId,
        $userId,
        $data['status'] ?? 'Por Aprobar',
        $data['requestDate'] ?? date('Y-m-d')
    ]);

    logSystemAction("Emitió reporte de falla: " . $data['type'], "SERVICIOS");

    response(["success" => true]);
} catch (PDOException $e) {
    response(["error" => "Fallo de base de datos: " . $e->getMessage()], 500);
}
?>