KoogleApp/src/Koogle.Application/Interfaces/IEmailService.cs

46 lines
1.8 KiB
C#

namespace Koogle.Application.Interfaces
{
/// <summary>
/// Service interface for email notifications.
/// </summary>
public interface IEmailService
{
/// <summary>
/// Sends notification to club admins about a new membership request.
/// </summary>
/// <param name="clubId">The club receiving the membership request.</param>
/// <param name="userDisplayName">Display name of the requesting user.</param>
/// <param name="userEmail">Email of the requesting user.</param>
/// <param name="ct">Cancellation token.</param>
Task SendMembershipRequestNotificationAsync(
Guid clubId,
string userDisplayName,
string userEmail,
CancellationToken ct = default);
/// <summary>
/// Sends notification to user that their membership was approved.
/// </summary>
/// <param name="userEmail">Email of the approved user.</param>
/// <param name="clubName">Name of the club.</param>
/// <param name="ct">Cancellation token.</param>
Task SendMembershipApprovedAsync(
string userEmail,
string clubName,
CancellationToken ct = default);
/// <summary>
/// Sends notification to user that their membership was rejected.
/// </summary>
/// <param name="userEmail">Email of the rejected user.</param>
/// <param name="clubName">Name of the club.</param>
/// <param name="reason">Optional rejection reason.</param>
/// <param name="ct">Cancellation token.</param>
Task SendMembershipRejectedAsync(
string userEmail,
string clubName,
string? reason,
CancellationToken ct = default);
}
}