From e7ff9531a534d0e9e2982feeb0d3e80ba43a4591 Mon Sep 17 00:00:00 2001 From: "zaccaria.majid" Date: Mon, 20 Mar 2023 10:32:39 +0100 Subject: [PATCH] modificati nomi cartelle componenti + aggiunto message service con lista claims per user --- .../BUTTONS/ButtonAddRemDoor.razor.cs | 5 +- .../Components/COMPMAN/CompanyList.razor.cs | 2 +- .../Components/DOORDEF/DoorPreview.razor.cs | 2 +- .../DOORDEF/DoorSizingStep.razor.cs | 2 +- .../Components/DOORDEF/StepsList.razor.cs | 2 +- .../{DOOR => DoorMan}/DoorList.razor | 0 .../{DOOR => DoorMan}/DoorList.razor.cs | 5 +- .../Components/GEN/CmpFooter.razor.cs | 2 +- .../Components/GEN/NavMenuHorizontal.razor.cs | 74 ++++++++++++++++++- .../Components/ORDER/OrderDetails.razor.cs | 2 +- .../Components/ORDER/OrderList.razor.cs | 22 ++++-- .../Components/USERS/UserList.razor.cs | 2 +- WebDoorCreator.UI/Data/WDCUserService.cs | 67 +++++++++++++++++ WebDoorCreator.UI/Program.cs | 1 + WebDoorCreator.UI/Shared/MainLayout.razor | 2 +- WebDoorCreator.UI/_Imports.razor | 14 ++-- 16 files changed, 175 insertions(+), 29 deletions(-) rename WebDoorCreator.UI/Components/{DOOR => DoorMan}/DoorList.razor (100%) rename WebDoorCreator.UI/Components/{DOOR => DoorMan}/DoorList.razor.cs (90%) create mode 100644 WebDoorCreator.UI/Data/WDCUserService.cs diff --git a/WebDoorCreator.UI/Components/BUTTONS/ButtonAddRemDoor.razor.cs b/WebDoorCreator.UI/Components/BUTTONS/ButtonAddRemDoor.razor.cs index b500dee..00ff629 100644 --- a/WebDoorCreator.UI/Components/BUTTONS/ButtonAddRemDoor.razor.cs +++ b/WebDoorCreator.UI/Components/BUTTONS/ButtonAddRemDoor.razor.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.JSInterop; using WebDoorCreator.UI.Data; -namespace WebDoorCreator.UI.Components.BUTTONS +namespace WebDoorCreator.UI.Components.Buttons { public partial class ButtonAddRemDoor { @@ -13,9 +13,6 @@ namespace WebDoorCreator.UI.Components.BUTTONS [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; - [Inject] - protected UserManager _userManager { get; set; } = null!; - [Inject] protected NavigationManager NavManager { get; set; } = null!; diff --git a/WebDoorCreator.UI/Components/COMPMAN/CompanyList.razor.cs b/WebDoorCreator.UI/Components/COMPMAN/CompanyList.razor.cs index ff59a9f..bbf7e7b 100644 --- a/WebDoorCreator.UI/Components/COMPMAN/CompanyList.razor.cs +++ b/WebDoorCreator.UI/Components/COMPMAN/CompanyList.razor.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Components; using WebDoorCreator.Data.DbModels; using WebDoorCreator.UI.Data; -namespace WebDoorCreator.UI.Components.COMPMAN +namespace WebDoorCreator.UI.Components.CompMan { public partial class CompanyList { diff --git a/WebDoorCreator.UI/Components/DOORDEF/DoorPreview.razor.cs b/WebDoorCreator.UI/Components/DOORDEF/DoorPreview.razor.cs index 3d3a1c8..8e1fe6d 100644 --- a/WebDoorCreator.UI/Components/DOORDEF/DoorPreview.razor.cs +++ b/WebDoorCreator.UI/Components/DOORDEF/DoorPreview.razor.cs @@ -1,4 +1,4 @@ -namespace WebDoorCreator.UI.Components +namespace WebDoorCreator.UI.Components.DoorDef { public partial class DoorPreview { diff --git a/WebDoorCreator.UI/Components/DOORDEF/DoorSizingStep.razor.cs b/WebDoorCreator.UI/Components/DOORDEF/DoorSizingStep.razor.cs index afebcd1..dcdf55a 100644 --- a/WebDoorCreator.UI/Components/DOORDEF/DoorSizingStep.razor.cs +++ b/WebDoorCreator.UI/Components/DOORDEF/DoorSizingStep.razor.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Components; using WebDoorCreator.Data.DbModels; using WebDoorCreator.UI.Data; -namespace WebDoorCreator.UI.Components.DOORDEF +namespace WebDoorCreator.UI.Components.DoorDef { public partial class DoorSizingStep { diff --git a/WebDoorCreator.UI/Components/DOORDEF/StepsList.razor.cs b/WebDoorCreator.UI/Components/DOORDEF/StepsList.razor.cs index 128dbda..68e83de 100644 --- a/WebDoorCreator.UI/Components/DOORDEF/StepsList.razor.cs +++ b/WebDoorCreator.UI/Components/DOORDEF/StepsList.razor.cs @@ -1,4 +1,4 @@ -namespace WebDoorCreator.UI.Components +namespace WebDoorCreator.UI.Components.DoorDef { public partial class StepsList { diff --git a/WebDoorCreator.UI/Components/DOOR/DoorList.razor b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor similarity index 100% rename from WebDoorCreator.UI/Components/DOOR/DoorList.razor rename to WebDoorCreator.UI/Components/DoorMan/DoorList.razor diff --git a/WebDoorCreator.UI/Components/DOOR/DoorList.razor.cs b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs similarity index 90% rename from WebDoorCreator.UI/Components/DOOR/DoorList.razor.cs rename to WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs index c715582..cabf8a4 100644 --- a/WebDoorCreator.UI/Components/DOOR/DoorList.razor.cs +++ b/WebDoorCreator.UI/Components/DoorMan/DoorList.razor.cs @@ -4,7 +4,7 @@ using Microsoft.JSInterop; using WebDoorCreator.Data.DbModels; using WebDoorCreator.UI.Data; -namespace WebDoorCreator.UI.Components.DOOR +namespace WebDoorCreator.UI.Components.DoorMan { public partial class DoorList { @@ -14,9 +14,6 @@ namespace WebDoorCreator.UI.Components.DOOR [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; - [Inject] - protected UserManager _userManager { get; set; } = null!; - [Inject] protected NavigationManager NavManager { get; set; } = null!; diff --git a/WebDoorCreator.UI/Components/GEN/CmpFooter.razor.cs b/WebDoorCreator.UI/Components/GEN/CmpFooter.razor.cs index 1979544..8ab33b1 100644 --- a/WebDoorCreator.UI/Components/GEN/CmpFooter.razor.cs +++ b/WebDoorCreator.UI/Components/GEN/CmpFooter.razor.cs @@ -1,6 +1,6 @@ using NLog; -namespace WebDoorCreator.UI.Components.GEN +namespace WebDoorCreator.UI.Components.Gen { public partial class CmpFooter : IDisposable { diff --git a/WebDoorCreator.UI/Components/GEN/NavMenuHorizontal.razor.cs b/WebDoorCreator.UI/Components/GEN/NavMenuHorizontal.razor.cs index 89178fc..a022a42 100644 --- a/WebDoorCreator.UI/Components/GEN/NavMenuHorizontal.razor.cs +++ b/WebDoorCreator.UI/Components/GEN/NavMenuHorizontal.razor.cs @@ -1,6 +1,78 @@ -namespace WebDoorCreator.UI.Components +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.JSInterop; +using WebDoorCreator.UI.Data; + +namespace WebDoorCreator.UI.Components.Gen { public partial class NavMenuHorizontal { + [Inject] + protected WDCUserService WDCUService { get; set; } = null!; + [Inject] + protected UserManager _userManager { get; set; } = null!; + [Inject] + protected AuthenticationStateProvider ASProvider { get; set; } = null!; + + protected string currUser { get; set; } = ""; + protected override async Task OnInitializedAsync() + { + await Task.Delay(1); + var all = ASProvider.GetAuthenticationStateAsync().Result.User.Identity; + if (all != null) + { + currUser = all?.Name!; + + } + await Task.Delay(1); + await ReloadData(); + WDCUService.EA_UserClaims += OnNewUserClaims; + } + + protected async Task ReloadData() + { + var user = await _userManager.FindByNameAsync(currUser); + var compId = await _userManager.GetClaimsAsync(user); + + if (compId != null) + { + foreach(var item in compId) + { + listRecord.Add(item.Value); + } + } + userClaimsList = listRecord; + } + public EventCallback> E_UserClaims { get; set; } + public List listRecord { get; set; } = new List(); + + public List? userClaimsList + { + get + { + return WDCUService.userClaims; + } + set + { + WDCUService.userClaims = value; + reportChange(); + } + } + [Inject] + protected AuthenticationStateProvider AuthenticationStateProvider { get; set; } = null!; + + public async void OnNewUserClaims() + { + await InvokeAsync(() => + { + StateHasChanged(); + }); + } + + private void reportChange() + { + E_UserClaims.InvokeAsync(userClaimsList); + } } } \ No newline at end of file diff --git a/WebDoorCreator.UI/Components/ORDER/OrderDetails.razor.cs b/WebDoorCreator.UI/Components/ORDER/OrderDetails.razor.cs index 2eeecfe..9bdba9e 100644 --- a/WebDoorCreator.UI/Components/ORDER/OrderDetails.razor.cs +++ b/WebDoorCreator.UI/Components/ORDER/OrderDetails.razor.cs @@ -1,7 +1,7 @@ using Microsoft.AspNetCore.Components; using WebDoorCreator.Data.DbModels; -namespace WebDoorCreator.UI.Components.ORDER +namespace WebDoorCreator.UI.Components.Order { public partial class OrderDetails { diff --git a/WebDoorCreator.UI/Components/ORDER/OrderList.razor.cs b/WebDoorCreator.UI/Components/ORDER/OrderList.razor.cs index c85c989..d3afad9 100644 --- a/WebDoorCreator.UI/Components/ORDER/OrderList.razor.cs +++ b/WebDoorCreator.UI/Components/ORDER/OrderList.razor.cs @@ -5,7 +5,7 @@ using Microsoft.JSInterop; using WebDoorCreator.Data.DbModels; using WebDoorCreator.UI.Data; -namespace WebDoorCreator.UI.Components.ORDER +namespace WebDoorCreator.UI.Components.Order { public partial class OrderList { @@ -36,12 +36,14 @@ namespace WebDoorCreator.UI.Components.ORDER protected override async Task OnInitializedAsync() { +#if false var all = ASProvider.GetAuthenticationStateAsync().Result.User.Identity; if (all != null) { currUser = all.Name; - } + } +#endif await ReloadData(); } @@ -93,18 +95,28 @@ namespace WebDoorCreator.UI.Components.ORDER return answ; } - + [Inject] + protected WDCUserService WDCUService { get; set; } = null!; + protected List? userClaims + { + get => WDCUService.userClaims; + } private async Task ReloadData() { var adesso = DateTime.Now.Date; ListOrdersStatus = null; await Task.Delay(1); +#if false var user = await _userManager.FindByNameAsync(currUser); var compId = await _userManager.GetClaimsAsync(user); - var claim = compId.FirstOrDefault(); + var claim = compId.FirstOrDefault(); if (claim != null) { - ListOrdersStatus = await WDService.GetOrderStatus(int.Parse(claim.Value), 0, adesso.AddYears(-2), adesso); + } +#endif + if (userClaims != null) + { + ListOrdersStatus = await WDService.GetOrderStatus(int.Parse(userClaims.FirstOrDefault()), 0, adesso.AddYears(-2), adesso); } await Task.Delay(1); await InvokeAsync(StateHasChanged); diff --git a/WebDoorCreator.UI/Components/USERS/UserList.razor.cs b/WebDoorCreator.UI/Components/USERS/UserList.razor.cs index 88bda48..2d675ea 100644 --- a/WebDoorCreator.UI/Components/USERS/UserList.razor.cs +++ b/WebDoorCreator.UI/Components/USERS/UserList.razor.cs @@ -3,7 +3,7 @@ using Microsoft.JSInterop; using WebDoorCreator.Data.DbModels; using WebDoorCreator.UI.Data; -namespace WebDoorCreator.UI.Components.USERS +namespace WebDoorCreator.UI.Components.Users { public partial class UserList { diff --git a/WebDoorCreator.UI/Data/WDCUserService.cs b/WebDoorCreator.UI/Data/WDCUserService.cs new file mode 100644 index 0000000..fe700a1 --- /dev/null +++ b/WebDoorCreator.UI/Data/WDCUserService.cs @@ -0,0 +1,67 @@ +namespace WebDoorCreator.UI.Data +{ + public class WDCUserService + { + #region Public Events + + public event Action EA_UserName = null!; + public event Action EA_UserClaims = null!; + + #endregion Public Events + + #region Public Properties + + public string newUserName + { + get => _newUserName; + set + { + if (_newUserName != value) + { + _newUserName = value; + reportUserName(); + } + } + } + public List? userClaims + { + get => _userClaims; + set + { + if (_userClaims != value) + { + _userClaims = value; + reportUserClaims(); + } + } + } + + #endregion Public Properties + + #region Protected Methods + + protected void reportUserName() + { + if (EA_UserName != null) + { + EA_UserName?.Invoke(); + } + } + protected void reportUserClaims() + { + if (EA_UserClaims != null) + { + EA_UserClaims?.Invoke(); + } + } + + #endregion Protected Methods + + #region Private Properties + + private string _newUserName { get; set; } = ""; + private List? _userClaims { get; set; } = null; + + #endregion Private Properties + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Program.cs b/WebDoorCreator.UI/Program.cs index 6dc67d9..395ead3 100644 --- a/WebDoorCreator.UI/Program.cs +++ b/WebDoorCreator.UI/Program.cs @@ -50,6 +50,7 @@ builder.Services.AddDefaultIdentity(options => options.SignIn.Requ builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); +builder.Services.AddScoped(); builder.Services.AddScoped>(); builder.Services.AddHttpContextAccessor(); builder.Services.AddSingleton(redisMultiplexer); diff --git a/WebDoorCreator.UI/Shared/MainLayout.razor b/WebDoorCreator.UI/Shared/MainLayout.razor index 59610d4..2a21339 100644 --- a/WebDoorCreator.UI/Shared/MainLayout.razor +++ b/WebDoorCreator.UI/Shared/MainLayout.razor @@ -1,5 +1,5 @@ @inherits LayoutComponentBase -@using WebDoorCreator.UI.Components.GEN +@using WebDoorCreator.UI.Components.Gen WebDoorCreator.UI diff --git a/WebDoorCreator.UI/_Imports.razor b/WebDoorCreator.UI/_Imports.razor index a126a59..d72ff7c 100644 --- a/WebDoorCreator.UI/_Imports.razor +++ b/WebDoorCreator.UI/_Imports.razor @@ -8,13 +8,13 @@ @using Microsoft.JSInterop @using WebDoorCreator.UI @using WebDoorCreator.UI.Components -@using WebDoorCreator.UI.Components.BUTTONS -@using WebDoorCreator.UI.Components.COMPMAN -@using WebDoorCreator.UI.Components.DOOR -@using WebDoorCreator.UI.Components.DOORDEF -@using WebDoorCreator.UI.Components.GEN -@using WebDoorCreator.UI.Components.ORDER -@using WebDoorCreator.UI.Components.USERS +@using WebDoorCreator.UI.Components.Buttons +@using WebDoorCreator.UI.Components.CompMan +@using WebDoorCreator.UI.Components.DoorMan +@using WebDoorCreator.UI.Components.DoorDef +@using WebDoorCreator.UI.Components.Gen +@using WebDoorCreator.UI.Components.Order +@using WebDoorCreator.UI.Components.Users @using WebDoorCreator.UI.Shared @using WebDoorCreator.Data.DbModels