#if NET using DigitalData.MessagingService.Application.Common.Dto.EmailAccounts; using DigitalData.MessagingService.Application.Common.Interfaces.Repositories; using DigitalData.MessagingService.Application.Common.ValueObjects; using DigitalData.MessagingService.Domain.Entities; using MediatR; using System.Security.Principal; namespace DigitalData.MessagingService.Application.EmailAccounts.Commands; /// /// DTO for a single email account configuration. /// public record EmailAccountModificationCommand : IRequest<(EmailAccount, bool)> { public required EmailAccountModificationDto ModifiedAccount { get; init; } public required Modification Modification { get; init; } } /// /// /// /// public class EmailAccountModificationCommandHandler(IRepository Repo) : IRequestHandler { public async Task<(EmailAccount, bool)> Handle(EmailAccountModificationCommand request, CancellationToken cancellationToken) { return request.Modification switch { Modification.Upsert => await Repo.UpsertAsync(a => a.Username == request.ModifiedAccount.Username, request.ModifiedAccount, cancellationToken), _ => throw new NotSupportedException($"Modification type '{request.Modification}' is not supported in email account modification."), }; } } #endif