using Microsoft.Extensions.Options; using StandManager.Domain.DTO; using StandManager.Service.Interfaces; using StandManager.Service.Resolver; public class MailProcessor { private readonly IManagerService _managerService; private readonly EmailConfig _config; private readonly IMailProcessorResolver _resolver; public MailProcessor(IManagerService managerService, IOptions config, IMailProcessorResolver resolver) { _managerService = managerService; _config = config.Value; _resolver = resolver; } public async Task Process() { var list = await _managerService.MailQueueService.RicercaQueryable(x => x.Eliminato == false && x.Sent == false && string.IsNullOrEmpty(x.Error), solaLettura:false); using var httpClient = new HttpClient(); foreach (var mailQueueByFrom in list.GroupBy(x => x.From)) { var processor = _resolver.Resolve(mailQueueByFrom.Key); await processor.ProcessAsync(mailQueueByFrom.ToList(), _config, httpClient); } var a = list; } }