- FIX Salvataggio mail Registrazione

- Aggiunta RangeSize in scheduler
This commit is contained in:
2026-01-22 11:46:09 +01:00
parent cc296bb102
commit d4659ef928
7 changed files with 63 additions and 50 deletions

View File

@ -5,4 +5,5 @@ 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 MailSplitChar { get; set; }
public int RangeSize { get; set; }
} }

View File

@ -1,3 +1,4 @@
using Microsoft.Extensions.Options;
using StandManager.Domain.DTO; using StandManager.Domain.DTO;
using StandManager.Service.Interfaces; using StandManager.Service.Interfaces;
using StandManager.Service.Resolver; using StandManager.Service.Resolver;
@ -8,10 +9,10 @@ public class MailProcessor
private readonly EmailConfig _config; private readonly EmailConfig _config;
private readonly IMailProcessorResolver _resolver; private readonly IMailProcessorResolver _resolver;
public MailProcessor(IManagerService managerService, EmailConfig config, IMailProcessorResolver resolver) public MailProcessor(IManagerService managerService, IOptions<EmailConfig> config, IMailProcessorResolver resolver)
{ {
_managerService = managerService; _managerService = managerService;
_config = config; _config = config.Value;
_resolver = resolver; _resolver = resolver;
} }

View File

@ -12,6 +12,7 @@
"EmailConfig": { "EmailConfig": {
"From": "registrazioni@gruppodac.eu", "From": "registrazioni@gruppodac.eu",
"ServerAddress": "https://mailbridge.gruppodac.eu/api/graph/NewMessageHtml", "ServerAddress": "https://mailbridge.gruppodac.eu/api/graph/NewMessageHtml",
"MailSplitChar": "#" "MailSplitChar": "#",
"RangeSize": 20
} }
} }

View File

@ -16,7 +16,9 @@ public class MailQueueService : TService<MailQueue>, IMailQueueService
public async Task<MailQueue> Salva(MailQueue entity) public async Task<MailQueue> Salva(MailQueue entity)
{ {
_unitOfWork.MailQueueRepository.Update(entity); if (entity.Id == Guid.Empty) await _unitOfWork.MailQueueRepository.Put(entity);
else _unitOfWork.MailQueueRepository.Update(entity);
await _unitOfWork.Salva(); await _unitOfWork.Salva();
return entity; return entity;

View File

@ -20,52 +20,58 @@ public class RegistrazioneMailProcessor : IMailProcessor
public async Task ProcessAsync(List<MailQueue> mailQueueList, EmailConfig _config, HttpClient httpClient) public async Task ProcessAsync(List<MailQueue> mailQueueList, EmailConfig _config, HttpClient httpClient)
{ {
foreach (var mailQueue in mailQueueList) var size = _config.RangeSize != 0 ? _config.RangeSize : mailQueueList.Count;
foreach (var chunk in mailQueueList.Chunk(size))
{ {
var email = new Email() foreach (var mailQueue in chunk)
{ {
From = _config.From, var email = new Email()
Body = string.IsNullOrEmpty(mailQueue.Args) ? mailQueue.Body : string.Format(mailQueue.Body, mailQueue.Args?.Split(_config.MailSplitChar) ?? [""]), {
Cc = null, From = _config.From,
Subject = mailQueue.Subject, Body = string.IsNullOrEmpty(mailQueue.Args) ? mailQueue.Body : string.Format(mailQueue.Body, mailQueue.Args?.Split(_config.MailSplitChar) ?? [""]),
To = new(){"g.vitari@oaservice.it"} // mailQueue.ToList.Split(";").ToList() Cc = null,
}; Subject = mailQueue.Subject,
var messageJson = JsonSerializer.Serialize(email); To = new(){"g.vitari@oaservice.it"} // mailQueue.ToList.Split(";").ToList()
};
// multipart var messageJson = JsonSerializer.Serialize(email);
using var form = new MultipartFormDataContent();
form.Add(
new StringContent(messageJson, Encoding.UTF8, "application/json"),
"messageJson"
);
//Attachments
/*var filePath = @"C:\temp\test.pdf";
var fileBytes = await File.ReadAllBytesAsync(filePath);
var fileContent = new ByteArrayContent(fileBytes); // multipart
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/pdf"); using var form = new MultipartFormDataContent();
form.Add(
form.Add( new StringContent(messageJson, Encoding.UTF8, "application/json"),
fileContent, "messageJson"
"attachments",
Path.GetFileName(filePath)
);*/
try
{
var response = await httpClient.PostAsync(
_config.ServerAddress,
form
); );
response.EnsureSuccessStatusCode();
mailQueue.Sent = true; //Attachments
await _managerService.MailQueueService.Salva(mailQueue); /*var filePath = @"C:\temp\test.pdf";
} var fileBytes = await File.ReadAllBytesAsync(filePath);
catch (Exception e)
{ var fileContent = new ByteArrayContent(fileBytes);
mailQueue.Sent = false; fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/pdf");
mailQueue.Error = e.Message;
await _managerService.MailQueueService.Salva(mailQueue); form.Add(
fileContent,
"attachments",
Path.GetFileName(filePath)
);*/
try
{
var response = await httpClient.PostAsync(
_config.ServerAddress,
form
);
response.EnsureSuccessStatusCode();
mailQueue.Sent = true;
await _managerService.MailQueueService.Salva(mailQueue);
}
catch (Exception e)
{
mailQueue.Sent = false;
mailQueue.Error = e.Message;
await _managerService.MailQueueService.Salva(mailQueue);
}
} }
} }
} }

View File

@ -90,15 +90,16 @@
}; };
await _managerService.IscrizioneEventoPerMailService.Salva(model); await _managerService.IscrizioneEventoPerMailService.Salva(model);
/*var queue = new MailQueue() var queue = new MailQueue()
{ {
ToList = iscrizione.Mail, ToList = iscrizione.Mail,
From = MailFrom.Registrazione, From = MailFrom.Registrazione,
Body = string.Empty, Body = string.Empty,
Sent = false, Sent = false,
Subject = "Registrazione" Subject = "Registrazione",
DataCreazione = DateTime.Now
}; };
await _managerService.MailQueueService.Salva(queue);*/ await _managerService.MailQueueService.Salva(queue);
_navManager.NavigateTo("/Grazie"); _navManager.NavigateTo("/Grazie");
} }

View File

@ -12,6 +12,7 @@
"EmailConfig": { "EmailConfig": {
"From": "", "From": "",
"ServerAddress": "", "ServerAddress": "",
"MailSplitChar": "#" "MailSplitChar": "#",
"RangeSize": 0
} }
} }