<?php
/**
 * Migración: Crear tabla file_requests para solicitudes de archivos grandes
 * 
 * Esta tabla almacena las solicitudes de carga de archivos grandes que se
 * envían a los clientes por WhatsApp. Cada solicitud genera un token único
 * que se usa como enlace público de carga.
 */

require_once __DIR__ . '/../config/config.php';

try {
    $db = Database::getInstance();
    $pdo = $db->getConnection();

    // Tabla principal: solicitudes de carga de archivos
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS file_requests (
            id INT AUTO_INCREMENT PRIMARY KEY,
            token VARCHAR(64) NOT NULL UNIQUE COMMENT 'Token único para el enlace público',
            user_id INT NOT NULL COMMENT 'FK a users.id (contacto de WhatsApp)',
            phone_number VARCHAR(20) NOT NULL COMMENT 'Teléfono del cliente',
            requested_by INT DEFAULT NULL COMMENT 'FK a admin_users.id (operador que solicitó)',
            status ENUM('pending','uploaded','expired','cancelled') DEFAULT 'pending',
            max_file_size BIGINT DEFAULT 52428800 COMMENT 'Tamaño máximo en bytes (default 50MB)',
            allowed_types VARCHAR(255) DEFAULT 'image,document' COMMENT 'Tipos permitidos separados por coma',
            message_sent_id VARCHAR(255) DEFAULT NULL COMMENT 'ID del mensaje de WhatsApp enviado',
            expires_at DATETIME NOT NULL COMMENT 'Fecha de expiración del enlace',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
            INDEX idx_token (token),
            INDEX idx_user_id (user_id),
            INDEX idx_phone (phone_number),
            INDEX idx_status (status),
            INDEX idx_expires (expires_at)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    ");

    echo "✅ Tabla file_requests creada correctamente\n";

    // Tabla de archivos subidos por los clientes
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS file_request_uploads (
            id INT AUTO_INCREMENT PRIMARY KEY,
            request_id INT NOT NULL COMMENT 'FK a file_requests.id',
            original_filename VARCHAR(255) NOT NULL,
            stored_filename VARCHAR(255) NOT NULL COMMENT 'Nombre único en disco',
            file_path TEXT NOT NULL COMMENT 'Ruta relativa al directorio uploads',
            file_size BIGINT NOT NULL,
            mime_type VARCHAR(100) NOT NULL,
            media_type ENUM('image','document','video','audio','other') DEFAULT 'document',
            thumbnail_path VARCHAR(255) DEFAULT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            INDEX idx_request (request_id),
            FOREIGN KEY (request_id) REFERENCES file_requests(id) ON DELETE CASCADE
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    ");

    echo "✅ Tabla file_request_uploads creada correctamente\n";
    echo "\n🎉 Migración completada exitosamente\n";

} catch (Exception $e) {
    echo "❌ Error en migración: " . $e->getMessage() . "\n";
    exit(1);
}
