using MotoresArgentinosV2.Core.DTOs; namespace MotoresArgentinosV2.Core.Interfaces; /// /// Servicio para gestionar preferencias de notificación por email y tokens de baja. /// public interface INotificationPreferenceService { /// /// Retorna las preferencias actuales del usuario (todas las categorías). /// Task GetPreferencesAsync(int userId); /// /// Guarda las preferencias enviadas desde el perfil del usuario. /// Task UpdatePreferencesAsync(int userId, UpdateNotificationPreferencesDto dto); /// /// Verifica si un usuario tiene habilitada una categoría de correo. /// Usa para chequear ANTES de enviar cada notificación del sistema. /// Task IsEnabledAsync(int userId, string category); /// /// Genera (o reutiliza) un token de baja firmado para incluir en el footer de un correo. /// Task GetOrCreateUnsubscribeTokenAsync(int userId, string category); /// /// Procesa la baja del usuario desde el enlace one-click (sin login). /// Valida el token y actualiza la preferencia correspondiente. /// /// /// (Success, CategoryLabel) indicando si se procesó OK y el nombre legible de la categoría. /// Task<(bool Success, string CategoryLabel)> UnsubscribeAsync(string token); }