<?php
/**
 * API: get_virtual_office_messages.php
 * SAC 2026 Kernel V4.1.61 MC/MB
 * 
 * Obtiene los mensajes de la oficina virtual para el usuario actual.
 * Si es admin/programador, puede filtrar por un usuario específico.
 */

require_once 'config.php';

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

$user_id = $_SESSION['user_id'];
$user_role = $_SESSION['user_role'];
$target_user_id = isset($_GET['targetUserId']) ? intval($_GET['targetUserId']) : null;

$isAdmin = in_array($user_role, ['admin', 'programmer', 'board']);

try {
    if ($isAdmin) {
        if ($target_user_id) {
            // Mensajes entre el admin y un usuario específico
            $stmt = $pdo->prepare("SELECT * FROM virtual_office_messages 
                                   WHERE (sender_id = ? AND receiver_id = ?)
                                      OR (sender_id = ? AND receiver_id = ?)
                                   ORDER BY created_at ASC");
            $stmt->execute([$user_id, $target_user_id, $target_user_id, $user_id]);
        } else {
            // Todos los mensajes recibidos por el admin (o enviados por él)
            $stmt = $pdo->prepare("SELECT * FROM virtual_office_messages 
                                   WHERE receiver_id = ? OR sender_id = ?
                                   ORDER BY created_at ASC");
            $stmt->execute([$user_id, $user_id]);
        }
    } else {
        // Mensajes del propietario (enviados a admin o recibidos de admin)
        $stmt = $pdo->prepare("SELECT * FROM virtual_office_messages 
                               WHERE sender_id = ? OR receiver_id = ?
                               ORDER BY created_at ASC");
        $stmt->execute([$user_id, $user_id]);
    }

    $raw_messages = $stmt->fetchAll();
    $messages = [];

    foreach ($raw_messages as $row) {
        $messages[] = [
            'id' => intval($row['id']),
            'senderId' => intval($row['sender_id']),
            'senderName' => $row['sender_name'],
            'receiverId' => intval($row['receiver_id']),
            'type' => $row['type'],
            'content' => $row['content'],
            'attachments' => json_decode($row['attachments'], true),
            'status' => $row['status'],
            'createdAt' => $row['created_at'],
            'isAiResponse' => boolval($row['is_ai_response'])
        ];
        
        // Marcar como leído si el receptor es el usuario actual
        if ($row['receiver_id'] == $user_id && $row['status'] == 'Pendiente') {
            $upd = $pdo->prepare("UPDATE virtual_office_messages SET status = 'Leído' WHERE id = ?");
            $upd->execute([$row['id']]);
        }
    }

    response($messages);
} catch (PDOException $e) {
    response(['error' => 'Error de base de datos: ' . $e->getMessage()], 500);
}
?>