- Scheduler aggiornato

This commit is contained in:
2026-01-26 15:30:44 +01:00
parent 6bdd4f44f4
commit a5a3f072f3
4 changed files with 58 additions and 53 deletions

View File

@ -4,6 +4,9 @@ public class EmailConfig
{ {
public string From { get; set; } public string From { get; set; }
public string ServerAddress { get; set; } public string ServerAddress { get; set; }
public string MailSplitChar { get; set; } public string MailSplitCharTo { get; set; }
public int RangeSize { get; set; } public int RangeSize { get; set; }
public string To { get; set; }
public string Subject { get; set; }
public string MailSplitCharBody { get; set; }
} }

View File

@ -10,9 +10,12 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"EmailConfig": { "EmailConfig": {
"From": "registrazioni@gruppodac.eu",
"ServerAddress": "https://mailbridge.gruppodac.eu/api/graph/NewMessageHtml", "ServerAddress": "https://mailbridge.gruppodac.eu/api/graph/NewMessageHtml",
"MailSplitChar": ";", "RangeSize": 3,
"RangeSize": 20 "From": "registrazioni@gruppodac.eu",
"MailSplitCharTo": ";",
"To": "g.vitari@oaservice.it;d.sandrelli@oaservice.it",
"Subject": "Registrazione",
"MailSplitCharBody": ";"
} }
} }

View File

@ -22,22 +22,23 @@ public class RegistrazioneMailProcessor : IMailProcessor
{ {
// Default size dei chunck è 20 // Default size dei chunck è 20
var size = _config.RangeSize != 0 ? _config.RangeSize : 20; var size = _config.RangeSize != 0 ? _config.RangeSize : 20;
// Estraggo i destinatari
var to = _config.To.Split(_config.MailSplitCharTo).ToList();
foreach (var chunk in mailQueueList.Chunk(size)) foreach (var chunk in mailQueueList.Chunk(size))
{ {
var emailTasks = chunk.Select(async mailQueue =>
{ string body = string.Join(_config.MailSplitCharBody, chunk.Select(x => x.ToList));
try try
{ {
var email = new Email() var email = new Email()
{ {
From = _config.From, From = _config.From,
Body = string.IsNullOrEmpty(mailQueue.Args) Body = body,
? mailQueue.Body
: string.Format(mailQueue.Body, mailQueue.Args?.Split(_config.MailSplitChar) ?? Array.Empty<string>()),
Cc = null, Cc = null,
Subject = mailQueue.Subject, Subject = _config.Subject,
To = mailQueue.ToList.Split(_config.MailSplitChar).ToList() // new() { "g.vitari@oaservice.it" } To = to // new() { "g.vitari@oaservice.it" }
}; };
var messageJson = JsonSerializer.Serialize(email); var messageJson = JsonSerializer.Serialize(email);
@ -60,23 +61,18 @@ public class RegistrazioneMailProcessor : IMailProcessor
form form
); );
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
mailQueue.Sent = true; if (chunk.First().ToList.Contains("4"))
mailQueue.Error = null; throw new Exception("Simulazione errore di invio");
return mailQueue; Array.ForEach(chunk, item => item.Sent = true);
} }
catch (Exception e) catch (Exception e)
{ {
mailQueue.Sent = false; Array.ForEach(chunk, item => item.Sent = false);
mailQueue.Error = e.Message; Array.ForEach(chunk, item => item.Error = e.Message);
return mailQueue;
} }
});
// Prendo i risultati dell'invio
var results = await Task.WhenAll(emailTasks);
// Salvo in blocco le entità // Salvo in blocco le entità
await _managerService.MailQueueService.Salva(results.ToList()); await _managerService.MailQueueService.Salva(chunk.ToList());
} }
} }
} }

View File

@ -10,9 +10,12 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"EmailConfig": { "EmailConfig": {
"From": "",
"ServerAddress": "", "ServerAddress": "",
"MailSplitChar": ";", "RangeSize": 0,
"RangeSize": 0 "From": "",
"MailSplitCharTo": ";",
"To": "",
"Subject": "",
"MailSplitCharBody": ";"
} }
} }