<?php
// open_dispute.php (RAÍZ)
require 'config/db.php';
if (session_status() === PHP_SESSION_NONE) { session_start(); }

// 1. Validar que el usuario esté logueado
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_SESSION['user_id'])) {
    $order_id = intval($_POST['order_id']);
    $user_id  = $_SESSION['user_id'];
    $reason   = $_POST['reason'] ?? 'No reason provided';
    $evidence = $_POST['evidence_url'] ?? null;

    try {
        $pdo->beginTransaction();

        // 2. Verificamos que la orden sea del usuario y NO esté cancelada ni ya en disputa
        // IMPORTANTE: Usamos 'IN_DISPUTE' para que coincida con tu Admin Panel
        $stmt = $pdo->prepare("UPDATE orders SET status = 'IN_DISPUTE', dispute_created_at = NOW() 
                               WHERE id = ? AND buyer_id = ? AND status NOT IN ('cancelled', 'IN_DISPUTE')");
        
        if ($stmt->execute([$order_id, $user_id]) && $stmt->rowCount() > 0) {
            
            // 3. Insertamos el primer mensaje en el chat de disputas (El Alegato Inicial)
            $stmt_msg = $pdo->prepare("INSERT INTO dispute_messages (order_id, sender_id, message, evidence_url) 
                                       VALUES (?, ?, ?, ?)");
            $stmt_msg->execute([$order_id, $user_id, $reason, $evidence]);

            // 4. (Opcional) Log de sistema
            $pdo->commit();
            header("Location: my_orders.php?msg=dispute_opened");
            exit;
        } else {
            throw new Exception("No se pudo abrir la disputa. Verifica el estado de la orden.");
        }

    } catch (Exception $e) {
        if ($pdo->inTransaction()) { $pdo->rollBack(); }
        header("Location: my_orders.php?error=" . urlencode($e->getMessage()));
        exit;
    }
} else {
    header("Location: login.php");
    exit;
}