using IdokladSdk.Models.Email;
using Idoklad.Client;
namespace Idoklad.Services;
///
/// Sends document e-mails (invoice, proforma, credit note, received invoice, reminders) through
/// the iDoklad MailClient. The settings carry the document id, recipients and options.
///
public sealed class MailService
{
private readonly IdokladApiAccessor _accessor;
public MailService(IdokladApiAccessor accessor) => _accessor = accessor;
public async Task SendIssuedInvoiceAsync(IssuedInvoiceEmailSettings settings, CancellationToken ct)
=> (await _accessor.Api.MailClient.IssuedInvoiceEmail.SendAsync(settings, ct)).Unwrap();
public async Task SendProformaInvoiceAsync(ProformaInvoiceEmailSettings settings, CancellationToken ct)
=> (await _accessor.Api.MailClient.ProformaInvoiceEmail.SendAsync(settings, ct)).Unwrap();
public async Task SendCreditNoteAsync(CreditNoteEmailSettings settings, CancellationToken ct)
=> (await _accessor.Api.MailClient.CreditNoteEmail.SendAsync(settings, ct)).Unwrap();
public async Task SendReceivedInvoiceAsync(ReceivedInvoiceEmailSettings settings, CancellationToken ct)
=> (await _accessor.Api.MailClient.ReceivedInvoiceEmail.SendAsync(settings, ct)).Unwrap();
public async Task SendRemindersAsync(RemindersEmailSettings settings, CancellationToken ct)
=> (await _accessor.Api.MailClient.RemindersEmail.SendAsync(settings, ct)).Unwrap();
}