-- ============================================================
-- SISTEMA DE PANEL HOSTING - ESQUEMA MARIADB
-- Importar en phpMyAdmin de cPanel
-- ============================================================

CREATE DATABASE IF NOT EXISTS hosting_panel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE hosting_panel;

-- Paquetes de hosting disponibles
CREATE TABLE IF NOT EXISTS paquetes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    descripcion TEXT,
    precio_mensual DECIMAL(10,2) NOT NULL DEFAULT 0.00,
    precio_anual DECIMAL(10,2) NOT NULL DEFAULT 0.00,
    disco_gb INT NOT NULL DEFAULT 5,
    ancho_banda_gb INT NOT NULL DEFAULT 50,
    cuentas_email INT NOT NULL DEFAULT 5,
    subdominios INT NOT NULL DEFAULT 5,
    bases_datos INT NOT NULL DEFAULT 2,
    activo TINYINT(1) NOT NULL DEFAULT 1,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Facturas
CREATE TABLE IF NOT EXISTS facturas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT NOT NULL,
    numero_factura VARCHAR(50) NOT NULL UNIQUE,
    concepto TEXT NOT NULL,
    monto DECIMAL(10,2) NOT NULL,
    estado ENUM('pendiente','pagada','vencida','cancelada') NOT NULL DEFAULT 'pendiente',
    periodo_inicio DATE,
    periodo_fin DATE,
    fecha_emision DATE NOT NULL,
    fecha_vencimiento DATE NOT NULL,
    fecha_pago TIMESTAMP NULL,
    metodo_pago VARCHAR(50),
    referencia_pago VARCHAR(100),
    notas TEXT,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- Tickets de soporte
CREATE TABLE IF NOT EXISTS tickets (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT NOT NULL,
    asunto VARCHAR(255) NOT NULL,
    mensaje TEXT NOT NULL,
    prioridad ENUM('baja','media','alta','urgente') DEFAULT 'media',
    estado ENUM('abierto','en_proceso','resuelto','cerrado') DEFAULT 'abierto',
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    actualizado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- Respuestas de tickets
CREATE TABLE IF NOT EXISTS ticket_respuestas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ticket_id INT NOT NULL,
    usuario_id INT NOT NULL,
    mensaje TEXT NOT NULL,
    es_admin TINYINT(1) DEFAULT 0,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (ticket_id) REFERENCES tickets(id) ON DELETE CASCADE,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- Log de actividad
CREATE TABLE IF NOT EXISTS actividad_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT,
    accion VARCHAR(100),
    descripcion TEXT,
    ip VARCHAR(45),
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- ============================================================
-- DATOS INICIALES
-- ============================================================

INSERT INTO paquetes (nombre, descripcion, precio_mensual, precio_anual, disco_gb, ancho_banda_gb, cuentas_email, subdominios, bases_datos) VALUES
('Básico',    'Ideal para sitios personales y blogs',      8.99,  89.99,  10,  100, 5,  5,  2),
('Profesional','Para negocios y tiendas en crecimiento',   19.99, 199.99, 50,  500, 20, 20, 10),
('Empresarial','Máximo rendimiento para grandes proyectos',39.99, 399.99, 100, UNLIMITED, 50, 50, 25);
