<?php
/**
 * API: delete_payment_attachment.php
 * SAC 2026 Kernel V4.1.62 MC/MB
 * 
 * Elimina un archivo adjunto asociado a una deuda.
 */
require_once 'session.php';
require_once 'config.php';

header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    response(['error' => 'Método no permitido'], 405);
}

if (!isset($_POST['attachmentId'])) {
    response(['error' => 'Parámetros insuficientes'], 400);
}

$attachmentId = intval($_POST['attachmentId']);
$currentUserId = $_SESSION['user_id'] ?? null;
$currentUserRole = $_SESSION['user_role'] ?? null;

if (!$currentUserId) {
    response(['error' => 'Sesión no iniciada'], 401);
}

try {
    $pdo = get_db_connection();
    
    // Obtener datos del adjunto
    $stmt = $pdo->prepare("SELECT id, file_path, uploaded_by, property_id FROM payment_attachments WHERE id = ?");
    $stmt->execute([$attachmentId]);
    $attachment = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$attachment) {
        response(['error' => 'Adjunto no encontrado'], 404);
    }

    // Seguridad: Solo el que lo subió o un administrador puede eliminarlo
    $isAdmin = in_array($currentUserRole, ['admin', 'programmer', 'board']);
    if (!$isAdmin && $attachment['uploaded_by'] != $currentUserId) {
        response(['error' => 'Acceso denegado'], 403);
    }

    // Eliminar archivo físico
    $filePath = '../' . $attachment['file_path'];
    if (file_exists($filePath)) {
        unlink($filePath);
    }

    // Eliminar registro de la DB
    $stmt = $pdo->prepare("DELETE FROM payment_attachments WHERE id = ?");
    $stmt->execute([$attachmentId]);
    
    response(['success' => true]);
} catch (Exception $e) {
    response(['error' => $e->getMessage()], 500);
}