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