From be92e549a2028d6bca3b3fed67b2c8ce1ee27771 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 21 Oct 2021 18:32:27 +0200 Subject: [PATCH 1/4] RImozione pagina UserManager obsoleta --- GWMS.UI/GWMS.UI.csproj | 2 +- GWMS.UI/Pages/UserManager.razor | 147 ----------------- GWMS.UI/Pages/UserManager.razor.cs | 252 ----------------------------- Resources/ChangeLog.html | 2 +- Resources/VersNum.txt | 2 +- Resources/manifest.xml | 2 +- 6 files changed, 4 insertions(+), 403 deletions(-) delete mode 100644 GWMS.UI/Pages/UserManager.razor delete mode 100644 GWMS.UI/Pages/UserManager.razor.cs diff --git a/GWMS.UI/GWMS.UI.csproj b/GWMS.UI/GWMS.UI.csproj index 84c1d80..8447a42 100644 --- a/GWMS.UI/GWMS.UI.csproj +++ b/GWMS.UI/GWMS.UI.csproj @@ -2,7 +2,7 @@ net5.0 - 1.0.2110.2116 + 1.0.2110.2118 95c9f021-52d1-4390-a670-5810b7b777b0 true true diff --git a/GWMS.UI/Pages/UserManager.razor b/GWMS.UI/Pages/UserManager.razor deleted file mode 100644 index c908ac8..0000000 --- a/GWMS.UI/Pages/UserManager.razor +++ /dev/null @@ -1,147 +0,0 @@ -@page "/UserManager" - -@using Blazorise.Components -@using GWMS.UI.Components - -
-
-
-
- Elenco Utenti -
-
-
-
-
-
- - - -
- -
-
-
-
-
- - - -
- -
-
-
-
-
- - - -
- -
-
-
-
-
- - - -
- -
-
-
-
-
-
-
- @if (currRecord != null) - { - - } - @if (ListRecords == null) - { - - } - else if (totalCount == 0) - { -
Nessun record trovato
- } - else - { -
-
- - - - - - - - - - - - - - - - - @foreach (var record in ListRecords) - { - - - - - - - - - - - - - } - -
UserNameCognomeNomeEmailAttLivelloMask ImpiantoMask FornitoreMask Trasportatore
@record.UserName@record.Lastname@record.Firstname@record.Email@record.Livello@record.MaskPlantId@record.MaskSupplierId@record.MaskTranspId
-
-
- } -
- -
\ No newline at end of file diff --git a/GWMS.UI/Pages/UserManager.razor.cs b/GWMS.UI/Pages/UserManager.razor.cs deleted file mode 100644 index b5defbf..0000000 --- a/GWMS.UI/Pages/UserManager.razor.cs +++ /dev/null @@ -1,252 +0,0 @@ -using GWMS.Data; -using GWMS.Data.DatabaseModels; -using GWMS.Data.DTO; -using GWMS.UI.Data; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Components; -using Microsoft.JSInterop; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace GWMS.UI.Pages -{ - [Authorize(Roles = "SuperAdmin, Admin, User")] - public partial class UserManager : ComponentBase, IDisposable - { - #region Private Fields - - private UserModel currRecord = null; - private List ListRecords; - private List PlantsList; - private List SearchRecords; - private List SuppliersList; - private List TransportersList; - - #endregion Private Fields - - #region Private Properties - - private int _currPage { get; set; } = 1; - - private int _numRecord { get; set; } = 10; - private UserLevel _selLevel { get; set; } = UserLevel.ND; - private int _selPlantId { get; set; } = 0; - private int _selSuppId { get; set; } = 0; - private int _selTraspId { get; set; } = 0; - - private int currPage - { - get => _currPage; - set - { - if (_currPage != value) - { - _currPage = value; - var pUpd = Task.Run(async () => await ReloadData()); - pUpd.Wait(); - } - } - } - - private bool isLoading { get; set; } = false; - - private int numRecord - { - get => _numRecord; - set - { - if (_numRecord != value) - { - _numRecord = value; - var pUpd = Task.Run(async () => await ReloadData()); - pUpd.Wait(); - } - } - } - - private UserLevel SelLevel - { - get => _selLevel; - set - { - if (_selLevel != value) - { - _selLevel = value; - var pUpd = Task.Run(async () => await ReloadData()); - pUpd.Wait(); - } - } - } - - private int SelPlantId - { - get => _selPlantId; - set - { - if (_selPlantId != value) - { - _selPlantId = value; - var pUpd = Task.Run(async () => await ReloadData()); - pUpd.Wait(); - } - } - } - - private int SelSupplierId - { - get => _selSuppId; - set - { - if (_selSuppId != value) - { - _selSuppId = value; - var pUpd = Task.Run(async () => await ReloadData()); - pUpd.Wait(); - } - } - } - - private int SelTransporterId - { - get => _selTraspId; - set - { - if (_selTraspId != value) - { - _selTraspId = value; - var pUpd = Task.Run(async () => await ReloadData()); - pUpd.Wait(); - } - } - } - - #endregion Private Properties - - #region Protected Properties - - [Inject] - protected MessageService AppMService { get; set; } - - [Inject] - protected GWMSDataService DataService { get; set; } - - [Inject] - protected IJSRuntime JSRuntime { get; set; } - - [Inject] - protected NavigationManager NavManager { get; set; } - - protected int totalCount - { - get - { - int answ = 0; - if (SearchRecords != null) - { - answ = SearchRecords.Count; - } - return answ; - } - } - - #endregion Protected Properties - - #region Private Methods - - private async Task ReloadData() - { - isLoading = true; - SearchRecords = await DataService.UsersGetFilt(SelLevel, SelPlantId, SelSupplierId, SelTransporterId); - ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); - isLoading = false; - } - - #endregion Private Methods - - #region Protected Methods - - protected void Edit(UserModel selRecord) - { - currRecord = selRecord; - } - - protected void ForceReload(int newNum) - { - numRecord = newNum; - } - - protected void ForceReloadPage(int newNum) - { - currPage = newNum; - } - - protected override async Task OnInitializedAsync() - { - AppMService.ShowSearch = true; - AppMService.PageName = "Utenti"; - AppMService.PageIcon = "fas fa-users pr-2"; - AppMService.EA_SearchUpdated += OnSeachUpdated; - await ReloadAllData(); - } - - protected async Task ReloadAllData() - { - PlantsList = await DataService.PlantsGetAll(); - SuppliersList = await DataService.SuppliersGetAll(); - TransportersList = await DataService.TransportersGetAll(); - await ReloadData(); - } - - protected void ResetData() - { - DataService.rollBackEdit(currRecord); - currRecord = null; - } - - protected void Select(UserModel selRecord) - { - // applico filtro da selezione - currRecord = selRecord; - } - - protected async Task UpdateData() - { - currRecord = null; - await ReloadData(); - } - - #endregion Protected Methods - - #region Public Methods - - public string checkSelect(int UserId) - { - string answ = ""; - if (currRecord != null) - { - try - { - answ = (currRecord.UserId == UserId) ? "table-info" : ""; - } - catch - { } - } - return answ; - } - - public void Dispose() - { - AppMService.EA_SearchUpdated -= OnSeachUpdated; - } - - public async void OnSeachUpdated() - { - await UpdateData(); - StateHasChanged(); - } - - #endregion Public Methods - } -} \ No newline at end of file diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index 100a41e..82e24aa 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ GWMS - Gas Warehouse Management System -

Versione: 1.0.2110.2116

+

Versione: 1.0.2110.2118


Note di rilascio:
  • diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index 0fa137c..c423f8b 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -1.0.2110.2116 +1.0.2110.2118 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index 7c02370..ad97fe0 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.0.2110.2116 + 1.0.2110.2118 http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html false From f7dcfc683867a35cd444fcbe017de254fd5a08cc Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 21 Oct 2021 18:33:16 +0200 Subject: [PATCH 2/4] Eliminazione anche di UserEditor --- GWMS.UI/Components/UserEditor.razor | 223 ---------------------------- 1 file changed, 223 deletions(-) delete mode 100644 GWMS.UI/Components/UserEditor.razor diff --git a/GWMS.UI/Components/UserEditor.razor b/GWMS.UI/Components/UserEditor.razor deleted file mode 100644 index 2452038..0000000 --- a/GWMS.UI/Components/UserEditor.razor +++ /dev/null @@ -1,223 +0,0 @@ -@using GWMS.UI.Components -@using GWMS.Data.DatabaseModels -@using System.Security.Claims -@using Microsoft.AspNetCore.Components.Authorization -@using GWMS.UI.Data -@using GWMS.Data.DTO -@using Microsoft.Extensions.Configuration - -@inject MessageService AppMService -@inject GWMSDataService DataService -@inject IConfiguration Configuration - -
    -
    - Modifica -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - - -
    - -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - - -
    - -
    -
    -
    -
    -
    - - - -
    - -
    -
    -
    -
    -
    - - - -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - -@code { - - private List PlantsList; - private List SuppliersList; - private List TransportersList; - - protected UserModel _currItem = new UserModel(); - protected int _supplierId { get; set; } = 0; - - [Parameter] - public UserModel currItem - { - get - { - return _currItem = null; - } - set - { - _currItem = value; - } - } - - [Parameter] - public EventCallback DataReset { get; set; } - [Parameter] - public EventCallback DataUpdated { get; set; } - [Parameter] - public int SupplierId - { - get - { - return _supplierId; - } - set - { - _supplierId = value; - // condiziono visualizzazione... - var pUpd = Task.Run(async () => await ReloadAllData()); - pUpd.Wait(); - } - } - - private async Task saveUpdate() - { - if (_currItem != null) - { - DataService.UserUpdate(_currItem); - await DataUpdated.InvokeAsync(1); - } - else - { - Console.WriteLine("User null!"); - } - } - - private async Task cancelUpdate() - { - await DataReset.InvokeAsync(0); - } - - protected override async Task OnInitializedAsync() - { - await ReloadAllData(); - } - - protected async Task ReloadAllData() - { - PlantsList = await DataService.PlantsGetAll(); - SuppliersList = await DataService.SuppliersGetAll(); - TransportersList = await DataService.TransportersGetAll(); - } - -} \ No newline at end of file From 7b08668f749446adc1038546cd234812b4569744 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 21 Oct 2021 19:03:51 +0200 Subject: [PATCH 3/4] Cambio metodi x recuperare utente da UserIdentity con claims + ruoli --- GWMS.Data/Controllers/GWMSController.cs | 2 + GWMS.Data/ModelBuilderExtensions.cs | 2 + GWMS.UI/Data/GWMSDataService.cs | 81 ++++++++++++++++++++++--- GWMS.UI/GWMS.UI.csproj | 2 +- GWMS.UI/Pages/UserAdmin.razor.cs | 13 ++++ Resources/ChangeLog.html | 2 +- Resources/VersNum.txt | 2 +- Resources/manifest.xml | 2 +- 8 files changed, 94 insertions(+), 12 deletions(-) diff --git a/GWMS.Data/Controllers/GWMSController.cs b/GWMS.Data/Controllers/GWMSController.cs index 6527647..8e4fd91 100644 --- a/GWMS.Data/Controllers/GWMSController.cs +++ b/GWMS.Data/Controllers/GWMSController.cs @@ -365,6 +365,7 @@ namespace GWMS.Data.Controllers return dbResult; } +#if false public List GetUsersFilt(UserLevel UsrLvl, int PlantId, int SupplierId, int TransporterId) { List dbResult = new List(); @@ -379,6 +380,7 @@ namespace GWMS.Data.Controllers } return dbResult; } +#endif public List GetWeekPlan() { diff --git a/GWMS.Data/ModelBuilderExtensions.cs b/GWMS.Data/ModelBuilderExtensions.cs index ae66fee..13e54cb 100644 --- a/GWMS.Data/ModelBuilderExtensions.cs +++ b/GWMS.Data/ModelBuilderExtensions.cs @@ -18,6 +18,7 @@ namespace GWMS.Data /// public static void Seed(this ModelBuilder modelBuilder) { +#if false // inizializzazione dei valori di default x USER modelBuilder.Entity().HasData( new UserModel { UserId = 1, AuthKey = "th1sIsTh3R1vrOfThNgt98", Livello = UserLevel.SuperAdmin, MaskPlantId = 0, MaskSupplierId = 0, MaskTranspId = 0, UserName = "samuele.locatelli", Email = "samuele@steamware.net", Firstname = "Samuele", Lastname = "Locatelli" }, @@ -34,6 +35,7 @@ namespace GWMS.Data new UserModel { UserId = 12, AuthKey = "th1sIsTh3R1vrOfThNgt96", Livello = UserLevel.User, MaskPlantId = 3, MaskSupplierId = 0, MaskTranspId = 0, UserName = "piz05.user01", Email = "info@steamware.net", Firstname = "Stazione", Lastname = "Baganzola" }, new UserModel { UserId = 13, AuthKey = "th1sIsTh3R1vrOfThNgt96", Livello = UserLevel.User, MaskPlantId = 4, MaskSupplierId = 0, MaskTranspId = 0, UserName = "piz08.user01", Email = "info@steamware.net", Firstname = "Stazione", Lastname = "Pilastrello" } ); +#endif // inizializzazione dei valori di default x Plant modelBuilder.Entity().HasData( diff --git a/GWMS.UI/Data/GWMSDataService.cs b/GWMS.UI/Data/GWMSDataService.cs index c331a88..5c9dd54 100644 --- a/GWMS.UI/Data/GWMSDataService.cs +++ b/GWMS.UI/Data/GWMSDataService.cs @@ -17,6 +17,7 @@ using GWMS.Data.DatabaseModels; using static GWMS.Data.IobObjects; using System.Globalization; using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Identity; namespace GWMS.UI.Data { @@ -28,6 +29,7 @@ namespace GWMS.UI.Data private static ILogger _logger; private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private readonly IEmailSender _emailSender; + private readonly UserManager _userManager; private readonly IDistributedCache distributedCache; private readonly IMemoryCache memoryCache; @@ -58,11 +60,12 @@ namespace GWMS.UI.Data #region Public Constructors - public GWMSDataService(IConfiguration configuration, ILogger logger, IMemoryCache memoryCache, IDistributedCache distributedCache, IEmailSender emailSender) + public GWMSDataService(IConfiguration configuration, ILogger logger, IMemoryCache memoryCache, IDistributedCache distributedCache, IEmailSender emailSender, UserManager userManager) { _logger = logger; _configuration = configuration; _emailSender = emailSender; + _userManager = userManager; // conf cache this.memoryCache = memoryCache; this.distributedCache = distributedCache; @@ -233,6 +236,15 @@ namespace GWMS.UI.Data // effettuo inserimento ordini! dbController.OrderInsert(NewOrders); + // recupero elenco users associati al FORNITORE.... + var rawUserList = UserDataGetFilt("").Result; + var supplList = rawUserList + .Where(x => x.Roles.Contains("ExtUser")) + .ToList(); + var transpList = rawUserList + .Where(x => x.Roles.Contains("ExtTransp")) + .ToList(); + // recupero NUOVI ordini x plant... foreach (var plant in currPlantData) { @@ -258,12 +270,17 @@ namespace GWMS.UI.Data sb.AppendLine($"Quantità ordinata: {item.OrderQty}"); emailBody = sb.ToString().Replace(Environment.NewLine, "
    "); - // recupero elenco users associati al FORNITORE.... - var userList = dbController.GetUsersFilt(UserLevel.ND, 0, item.SupplierId, 0); - foreach (var user in userList) + //var userList = dbController.GetUsersFilt(UserLevel.ND, 0, item.SupplierId, 0); + System.Security.Claims.Claim suppClaim = new System.Security.Claims.Claim("SupplierId", $"{item.SupplierId}"); + var userListSupp = supplList + .Where(x => x.Claims.Contains(suppClaim)) + .ToList(); + + foreach (var user in userListSupp) { // invio email di notifica nuovi ordini inseriti - emailDest = user.Email; + emailDest = user.Identity.Email; + //emailDest = user.Email; // invio! await _emailSender.SendEmailAsync(emailDest, emailSubj, emailBody); } @@ -284,11 +301,16 @@ namespace GWMS.UI.Data emailBody = sb.ToString().Replace(Environment.NewLine, "
    "); // recupero elenco users associati al FORNITORE.... - userList = dbController.GetUsersFilt(UserLevel.ND, 0, 0, item.TransporterId); - foreach (var user in userList) + //userList = dbController.GetUsersFilt(UserLevel.ND, 0, 0, item.TransporterId); + System.Security.Claims.Claim transpClaim = new System.Security.Claims.Claim("TransporterId", $"{item.TransporterId}"); + var userListTransp = supplList + .Where(x => x.Claims.Contains(suppClaim)) + .ToList(); + foreach (var user in userListTransp) { // invio email di notifica nuovi ordini inseriti - emailDest = user.Email; + emailDest = user.Identity.Email; + //emailDest = user.Email; // invio! await _emailSender.SendEmailAsync(emailDest, emailSubj, emailBody); } @@ -869,6 +891,48 @@ namespace GWMS.UI.Data return await Task.FromResult(dbResult); } + public async Task> UserDataGetFilt(string searchVal) + { + // Collezione utenti + List RawList = new List(); + List UsersList = new List(); + // recupero utenti da obj _userManager + var allData = _userManager.Users.ToList(); + if (!string.IsNullOrEmpty(searchVal)) + { + RawList = allData.Where(x => x.NormalizedEmail.Contains(searchVal.ToUpper()) || x.NormalizedUserName.Contains(searchVal.ToUpper())).ToList(); + } + else + { + RawList = allData; + } + var user = RawList.Select(x => new IdentityUser + { + Id = x.Id, + UserName = x.UserName, + Email = x.Email, + PhoneNumber = x.PhoneNumber, + PasswordHash = "*****", + EmailConfirmed = x.EmailConfirmed + }).ToList(); + + foreach (var item in user) + { + var UserRoles = await _userManager.GetRolesAsync(item); + var UserClaims = await _userManager.GetClaimsAsync(item); + + var newItem = new UserData() + { + Identity = item, + Roles = UserRoles.ToList(), + Claims = UserClaims.ToList() + }; + UsersList.Add(newItem); + } + return await Task.FromResult(UsersList); + } + +#if false public async Task> UsersGetFilt(UserLevel UsrLvl, int PlantId, int SupplierId, int TransporterId) { List dbResult = new List(); @@ -893,6 +957,7 @@ namespace GWMS.UI.Data { } } +#endif public async void WeekPlanDelete(WeekPlanModel currItem) { diff --git a/GWMS.UI/GWMS.UI.csproj b/GWMS.UI/GWMS.UI.csproj index 8447a42..2d881d0 100644 --- a/GWMS.UI/GWMS.UI.csproj +++ b/GWMS.UI/GWMS.UI.csproj @@ -2,7 +2,7 @@ net5.0 - 1.0.2110.2118 + 1.0.2110.2119 95c9f021-52d1-4390-a670-5810b7b777b0 true true diff --git a/GWMS.UI/Pages/UserAdmin.razor.cs b/GWMS.UI/Pages/UserAdmin.razor.cs index 0e4523b..f3b7ac9 100644 --- a/GWMS.UI/Pages/UserAdmin.razor.cs +++ b/GWMS.UI/Pages/UserAdmin.razor.cs @@ -136,6 +136,9 @@ namespace GWMS.UI.Pages [Inject] protected AuthenticationStateProvider AuthenticationStateProvider { get; set; } + [Inject] + protected GWMSDataService DataService { get; set; } + [Inject] protected IJSRuntime JSRuntime { get; set; } @@ -464,6 +467,15 @@ namespace GWMS.UI.Pages { // clear any error messages strError = ""; + + var rawData = await DataService.UserDataGetFilt(searchVal); + + UsersList = rawData + .Skip(numRecord * (currPage - 1)).Take(numRecord) + .ToList(); + +#if false + // Collection to hold users UsersList = new List(); // get users from _UserManager @@ -499,6 +511,7 @@ namespace GWMS.UI.Pages }; UsersList.Add(newItem); } +#endif } public async void OnSeachUpdated() diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html index 82e24aa..099fb5e 100644 --- a/Resources/ChangeLog.html +++ b/Resources/ChangeLog.html @@ -1,6 +1,6 @@ GWMS - Gas Warehouse Management System -

    Versione: 1.0.2110.2118

    +

    Versione: 1.0.2110.2119


    Note di rilascio:
    • diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt index c423f8b..2d386eb 100644 --- a/Resources/VersNum.txt +++ b/Resources/VersNum.txt @@ -1 +1 @@ -1.0.2110.2118 +1.0.2110.2119 diff --git a/Resources/manifest.xml b/Resources/manifest.xml index ad97fe0..bcf82ec 100644 --- a/Resources/manifest.xml +++ b/Resources/manifest.xml @@ -1,6 +1,6 @@ - 1.0.2110.2118 + 1.0.2110.2119 http://nexus.steamware.net/repository/SWS/GWMS/stable/0/GWMS.UI.zip http://nexus.steamware.net/repository/SWS/GWMS/stable/0/ChangeLog.html false From 42d83239efc633f145c48ce21c686eeea18ce859 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 21 Oct 2021 19:42:10 +0200 Subject: [PATCH 4/4] COmpletata review recupero dati utente da IDentityFramework --- GWMS.UI/Data/GWMSDataService.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/GWMS.UI/Data/GWMSDataService.cs b/GWMS.UI/Data/GWMSDataService.cs index 5c9dd54..7a70432 100644 --- a/GWMS.UI/Data/GWMSDataService.cs +++ b/GWMS.UI/Data/GWMSDataService.cs @@ -270,10 +270,11 @@ namespace GWMS.UI.Data sb.AppendLine($"Quantità ordinata: {item.OrderQty}"); emailBody = sb.ToString().Replace(Environment.NewLine, "
      "); - //var userList = dbController.GetUsersFilt(UserLevel.ND, 0, item.SupplierId, 0); System.Security.Claims.Claim suppClaim = new System.Security.Claims.Claim("SupplierId", $"{item.SupplierId}"); + + // recupero elenco users associati al FORNITORE.... var userListSupp = supplList - .Where(x => x.Claims.Contains(suppClaim)) + .Where(x => x.Claims.Where(c => c.Type == "SupplierId" && c.Value == $"{item.SupplierId}").Count() > 0) .ToList(); foreach (var user in userListSupp) @@ -283,6 +284,7 @@ namespace GWMS.UI.Data //emailDest = user.Email; // invio! await _emailSender.SendEmailAsync(emailDest, emailSubj, emailBody); + _logger.LogInformation($"Email sento to SUPPLIER {emailDest}!"); } // TRASPORTATORI! @@ -300,11 +302,9 @@ namespace GWMS.UI.Data sb.AppendLine($"Note: {item.OrderDesc}"); emailBody = sb.ToString().Replace(Environment.NewLine, "
      "); - // recupero elenco users associati al FORNITORE.... - //userList = dbController.GetUsersFilt(UserLevel.ND, 0, 0, item.TransporterId); - System.Security.Claims.Claim transpClaim = new System.Security.Claims.Claim("TransporterId", $"{item.TransporterId}"); - var userListTransp = supplList - .Where(x => x.Claims.Contains(suppClaim)) + // recupero elenco users associati al TRASPORTATORE.... + var userListTransp = transpList + .Where(x => x.Claims.Where(c => c.Type == "TransporterId" && c.Value == $"{item.TransporterId}").Count() > 0) .ToList(); foreach (var user in userListTransp) { @@ -313,6 +313,7 @@ namespace GWMS.UI.Data //emailDest = user.Email; // invio! await _emailSender.SendEmailAsync(emailDest, emailSubj, emailBody); + _logger.LogInformation($"Email sento to TRANSPORTER {emailDest}!"); } } }