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