#if NET using DigitalData.MessagingService.Application.Common.Options; using DigitalData.MessagingService.Abstraction; using MediatR; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace DigitalData.MessagingService.Application.EmailAccount.Queries; public record GetSenderQuery : IRequest { public int? Id { get; init; } public string? Username { get; init; } } /// /// /// /// /// public class GetSenderQueryHandler(IOptions Options, ILogger Logger) : IRequestHandler { public Task Handle(GetSenderQuery request, CancellationToken cancellationToken) { var accounts = request.Id is not null ? Options.Value.Accounts.Where(a => a.Id == request.Id) : Options.Value.Accounts.Where(a => a.Username == request.Username); if(accounts.Count() > 1) { Logger.LogWarning( "Multiple email accounts found for the given criteria ({Criteria}). Returning the first one.", request.Id is not null ? $"Id: {request.Id}" : $"Username: {request.Username}" ); } return Task.FromResult(accounts.FirstOrDefault()); } } #endif