

-- Tabla de historial de alertas enviadas
CREATE TABLE IF NOT EXISTS alertas_historial (
    id_alerta INT AUTO_INCREMENT PRIMARY KEY,
    tipo_alerta ENUM('STOCK_BAJO', 'STOCK_CRITICO', 'SIN_STOCK') NOT NULL,
    id_producto INT NOT NULL,
    id_almacen INT,
    stock_actual DECIMAL(10,2) NOT NULL,
    stock_minimo DECIMAL(10,2) NOT NULL,
    mensaje TEXT,
    notificado_email TINYINT(1) DEFAULT 0,
    notificado_whatsapp TINYINT(1) DEFAULT 0,
    email_enviado_a VARCHAR(500),
    whatsapp_enviado_a VARCHAR(500),
    leida TINYINT(1) DEFAULT 0,
    leida_por INT,
    fecha_lectura DATETIME,
    fecha_creacion DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_producto) REFERENCES productos(id_producto) ON DELETE CASCADE,
    FOREIGN KEY (id_almacen) REFERENCES almacenes(id_almacen) ON DELETE SET NULL,
    INDEX idx_tipo_alerta (tipo_alerta),
    INDEX idx_fecha (fecha_creacion),
    INDEX idx_leida (leida)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla de suscriptores a alertas
CREATE TABLE IF NOT EXISTS alertas_suscriptores (
    id_suscriptor INT AUTO_INCREMENT PRIMARY KEY,
    id_usuario INT,
    nombre VARCHAR(100) NOT NULL,
    email VARCHAR(100),
    telefono VARCHAR(20),
    recibir_email TINYINT(1) DEFAULT 1,
    recibir_whatsapp TINYINT(1) DEFAULT 0,
    tipos_alerta VARCHAR(100) DEFAULT 'STOCK_BAJO,STOCK_CRITICO,SIN_STOCK',
    activo TINYINT(1) DEFAULT 1,
    fecha_creacion DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_usuario) REFERENCES usuarios(id_usuario) ON DELETE SET NULL,
    INDEX idx_activo (activo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tabla de productos excluidos de alertas
CREATE TABLE IF NOT EXISTS alertas_productos_excluidos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    id_producto INT NOT NULL,
    motivo VARCHAR(255),
    excluido_por INT,
    fecha_exclusion DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (id_producto) REFERENCES productos(id_producto) ON DELETE CASCADE,
    FOREIGN KEY (excluido_por) REFERENCES usuarios(id_usuario) ON DELETE SET NULL,
    UNIQUE KEY unique_producto (id_producto)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Índices adicionales para optimizar consultas
CREATE INDEX IF NOT EXISTS idx_productos_stock_minimo ON productos(stock_minimo);
CREATE INDEX IF NOT EXISTS idx_alertas_hist_producto ON alertas_historial(id_producto, fecha_creacion);
