inserito metodi test invio email

This commit is contained in:
Samuele Locatelli
2021-10-21 16:16:27 +02:00
parent 411442dc14
commit 98ea55c07d
+81 -13
View File
@@ -16,6 +16,7 @@ using GWMS.Data.DTO;
using GWMS.Data.DatabaseModels;
using static GWMS.Data.IobObjects;
using System.Globalization;
using Microsoft.AspNetCore.Identity.UI.Services;
namespace GWMS.UI.Data
{
@@ -25,8 +26,8 @@ namespace GWMS.UI.Data
private static IConfiguration _configuration;
private static ILogger<GWMSDataService> _logger;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
private readonly IEmailSender _emailSender;
private readonly IDistributedCache distributedCache;
private readonly IMemoryCache memoryCache;
@@ -57,10 +58,11 @@ namespace GWMS.UI.Data
#region Public Constructors
public GWMSDataService(IConfiguration configuration, ILogger<GWMSDataService> logger, IMemoryCache memoryCache, IDistributedCache distributedCache)
public GWMSDataService(IConfiguration configuration, ILogger<GWMSDataService> logger, IMemoryCache memoryCache, IDistributedCache distributedCache, IEmailSender emailSender)
{
_logger = logger;
_configuration = configuration;
_emailSender = emailSender;
// conf cache
this.memoryCache = memoryCache;
this.distributedCache = distributedCache;
@@ -185,6 +187,10 @@ namespace GWMS.UI.Data
return mHash(string.Format("ExeTask:{0}", idxMacchina));
}
/// <summary>
/// FUnzione verifica eventuale creazione NUOVI ordini di consegna
/// </summary>
/// <returns></returns>
protected async Task<bool> checkCreateOrders()
{
bool fatto = false;
@@ -227,18 +233,66 @@ namespace GWMS.UI.Data
// effettuo inserimento ordini!
dbController.OrderInsert(NewOrders);
// invio email x ogni fornitore x i NUOVI ordini inseriti
var orders4supp = NewOrders.GroupBy(g => g.SupplierId).FirstOrDefault();
foreach (var item in orders4supp)
// recupero NUOVI ordini x plant...
foreach (var plant in currPlantData)
{
// invio email di notifica nuovi ordini inseriti
}
var newOrderOpen = await OrdersGetOpen(plant.PlantId);
string emailDest = "";
string emailSubj = "";
string emailBody = "";
StringBuilder sb = new StringBuilder();
// invio email x ogni fornitore x i NUOVI ordini inseriti
var orders4transp = NewOrders.GroupBy(g => g.TransporterId).FirstOrDefault();
foreach (var item in orders4transp)
{
// invio email di notifica nuovi ordini inseriti
// invio email x ogni fornitore / trasportatore x i NUOVI ordini inseriti
foreach (var item in newOrderOpen)
{
// FORNITORI!
emailSubj = $"GWMS: Ordine FORNITURA GAS per {item.Plant.PlantDesc}";
sb = new StringBuilder();
sb.AppendLine($"<h3>Fornitore {item.Supplier.SupplierDesc}</h3>");
sb.AppendLine($"<b>Trasportatore {item.Transporter.TransporterDesc}</b>");
sb.AppendLine($"Impianto di destinazione {item.Plant.PlantDesc}");
sb.AppendLine("");
sb.AppendLine($"Ordine di consegna: {item.OrderCode}");
sb.AppendLine($"Data ordine: {item.DtOrder}");
sb.AppendLine($"Data consegna indicativa: {item.DtETA}");
sb.AppendLine($"Quantità ordinata: {item.OrderQty}");
emailBody = sb.ToString().Replace(Environment.NewLine, "<br/>");
// recupero elenco users associati al FORNITORE....
var userList = dbController.GetUsersFilt(UserLevel.ND, 0, item.SupplierId, 0);
foreach (var user in userList)
{
// invio email di notifica nuovi ordini inseriti
emailDest = user.Email;
// invio!
await _emailSender.SendEmailAsync(emailDest, emailSubj, emailBody);
}
// TRASPORTATORI!
emailSubj = $"GWMS: Ordine TRASPORTO GAS per {item.Plant.PlantDesc}";
sb = new StringBuilder();
sb.AppendLine($"<h3>Trasportatore {item.Transporter.TransporterDesc}</h3>");
sb.AppendLine($"<b>Fornitore {item.Supplier.SupplierDesc}</b>");
sb.AppendLine($"Impianto di destinazione {item.Plant.PlantDesc}");
sb.AppendLine("");
sb.AppendLine($"Ordine di consegna: {item.OrderCode}");
sb.AppendLine($"Data ordine: {item.DtOrder}");
sb.AppendLine($"Data consegna indicativa: {item.DtETA}");
sb.AppendLine($"Quantità ordinata: {item.OrderQty}");
sb.AppendLine("");
sb.AppendLine($"Note: {item.OrderDesc}");
emailBody = sb.ToString().Replace(Environment.NewLine, "<br/>");
// recupero elenco users associati al FORNITORE....
userList = dbController.GetUsersFilt(UserLevel.ND, 0, 0, item.TransporterId);
foreach (var user in userList)
{
// invio email di notifica nuovi ordini inseriti
emailDest = user.Email;
// invio!
await _emailSender.SendEmailAsync(emailDest, emailSubj, emailBody);
}
}
}
fatto = true;
}
@@ -730,7 +784,7 @@ namespace GWMS.UI.Data
try
{
done = dbController.PlantUpdate(currItem);
InvalidateAllCache();
await InvalidateAllCache();
}
catch (Exception exc)
{
@@ -780,6 +834,20 @@ namespace GWMS.UI.Data
return await Task.FromResult(dbResult);
}
public async Task<bool> TestSendEmail(string destEmail, string oggetto, string corpo)
{
bool answ = false;
try
{
await _emailSender.SendEmailAsync(destEmail, oggetto, corpo);
answ = true;
}
catch
{ }
return answ;
}
public async Task<List<TransporterModel>> TransportersGetAll()
{
List<TransporterModel> dbResult = new List<TransporterModel>();