From e996a0e7048680bbf2e89356fdee94760add349a Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 7 Mar 2023 09:52:37 +0100 Subject: [PATCH] Fix startup progetto --- .../Components/CompanyList.razor | 48 ++++++- .../Components/CompanyList.razor.cs | 44 +++++++ .../Data/WebDoorCreatorService.cs | 124 ++++++++++-------- WebDoorCreator.UI/Program.cs | 25 ++++ WebDoorCreator.UI/Shared/NavMenu.razor | 4 +- WebDoorCreator.UI/_Imports.razor | 1 + WebDoorCreator.UI/appsettings.json | 2 +- 7 files changed, 184 insertions(+), 64 deletions(-) create mode 100644 WebDoorCreator.UI/Components/CompanyList.razor.cs diff --git a/WebDoorCreator.UI/Components/CompanyList.razor b/WebDoorCreator.UI/Components/CompanyList.razor index 71416b7..a7f045b 100644 --- a/WebDoorCreator.UI/Components/CompanyList.razor +++ b/WebDoorCreator.UI/Components/CompanyList.razor @@ -1,5 +1,45 @@ -

CompanyList

- -@code { - +@if (ListRecords == null) +{ + +} +else +{ + + + + + + + + + + + + @foreach (var item in ListRecords) + { + + + + + + + + } + +
+ @**@ + CompanyVATAddessGuid
+ @*@if (!item.Conf) + { + + }*@ + + @item.CompanyName + + @item.VAT + + @item.Address + + @item.CompanyToken +
} diff --git a/WebDoorCreator.UI/Components/CompanyList.razor.cs b/WebDoorCreator.UI/Components/CompanyList.razor.cs new file mode 100644 index 0000000..ac26ae9 --- /dev/null +++ b/WebDoorCreator.UI/Components/CompanyList.razor.cs @@ -0,0 +1,44 @@ +using Microsoft.AspNetCore.Components; +using WebDoorCreator.Data.DbModels; +using WebDoorCreator.UI.Data; + +namespace WebDoorCreator.UI.Components +{ + public partial class CompanyList + { + #region Protected Properties + + [Inject] + protected WebDoorCreatorService WDService { get; set; } = null!; + + #endregion Protected Properties + + #region Protected Methods + + protected override async Task OnParametersSetAsync() + { + await ReloadData(); + } + + #endregion Protected Methods + + #region Private Fields + + private List? ListRecords = null; + + #endregion Private Fields + + #region Private Methods + + private async Task ReloadData() + { + ListRecords = null; + await Task.Delay(1); + ListRecords = await WDService.CompanyGetAll(); + await Task.Delay(1); + await InvokeAsync(StateHasChanged); + } + + #endregion Private Methods + } +} \ No newline at end of file diff --git a/WebDoorCreator.UI/Data/WebDoorCreatorService.cs b/WebDoorCreator.UI/Data/WebDoorCreatorService.cs index 93f39ae..970e1b6 100644 --- a/WebDoorCreator.UI/Data/WebDoorCreatorService.cs +++ b/WebDoorCreator.UI/Data/WebDoorCreatorService.cs @@ -1,10 +1,8 @@ -using EgwCoreLib.Razor.Data; -using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Identity.UI.Services; using Newtonsoft.Json; using NLog; using StackExchange.Redis; using System.Diagnostics; -using System.Text; using WebDoorCreator.Data.Controllers; using WebDoorCreator.Data.DbModels; @@ -12,21 +10,20 @@ namespace WebDoorCreator.UI.Data { public class WebDoorCreatorService { - - public static WebDoorCreator.Data.Controllers.WebDoorCreatorController dbController = null!; + #region Public Fields - private static IConfiguration _configuration = null!; + public static WebDoorCreatorController dbController = null!; - private static ILogger _logger = null!; + #endregion Public Fields - public WebDoorCreatorService(IConfiguration configuration, ILogger logger, IConnectionMultiplexer redisConnMult, IEmailSender emailSender) + #region Public Constructors + + public WebDoorCreatorService(IConfiguration configuration, IConnectionMultiplexer redisConnMult, IEmailSender emailSender) { - _logger = logger; _configuration = configuration; _emailSender = emailSender; // Conf cache - redisConn = redisConnMult;// ConnectionMultiplexer.Connect(_configuration.GetConnectionString("Redis")); - //redisConn = ConnectionMultiplexer.Connect(_configuration.GetConnectionString("Redis")); + redisConn = redisConnMult; redisDb = this.redisConn.GetDatabase(); // json serializer... FIX errore loop circolare https://www.ryadel.com/en/jsonserializationexception-self-referencing-loop-detected-error-fix-entity-framework-asp-net-core/ @@ -34,51 +31,31 @@ namespace WebDoorCreator.UI.Data { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; + // cod app CodApp = _configuration["CodApp"]; // Conf DB string connStr = _configuration.GetConnectionString("WDC.DB"); if (string.IsNullOrEmpty(connStr)) { - _logger.LogError("ConnString empty!"); + Log.Info("ConnString empty!"); } else { dbController = new WebDoorCreatorController(configuration); } - _logger.LogInformation("Avviata classe WebDoorCreatorService"); + Log.Info("Avviata classe WebDoorCreatorService"); } - private static JsonSerializerSettings? JSSettings; + #endregion Public Constructors - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); - - private readonly IEmailSender _emailSender; - - /// - /// Durata cache lunga IN SECONDI - /// - private int cacheTtlLong = 60 * 5; - - /// - /// Durata cache breve IN SECONDI - /// - private int cacheTtlShort = 60 * 1; - - /// - /// Oggetto per connessione a REDIS - /// - private IConnectionMultiplexer redisConn; - - //ISubscriber sub = redis.GetSubscriber(); - /// - /// Oggetto DB redis da impiegare x chiamate R/W - /// - private IDatabase redisDb = null!; + #region Public Properties public string CodApp { get; set; } = ""; + #endregion Public Properties + #region Public Methods /// /// Elenco AKV @@ -122,6 +99,54 @@ namespace WebDoorCreator.UI.Data return dbResult; } + #endregion Public Methods + + #region Protected Fields + + protected const string passPhrase = "9eb4660f-8753-46bc-b23b-08759ba03fe9"; + + //#region Protected Fields + protected const string redisBaseAddr = "WDC"; + + //#endregion Public Methods + protected const string rKeyCompany = $"{redisBaseAddr}:Cache:Company"; + + protected Random rnd = new Random(); + + #endregion Protected Fields + + #region Private Fields + + private static IConfiguration _configuration = null!; + + private static JsonSerializerSettings? JSSettings; + + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + private readonly IEmailSender _emailSender; + + /// + /// Durata cache lunga IN SECONDI + /// + private int cacheTtlLong = 60 * 5; + + /// + /// Durata cache breve IN SECONDI + /// + private int cacheTtlShort = 60 * 1; + + /// + /// Oggetto per connessione a REDIS + /// + private IConnectionMultiplexer redisConn; + + //ISubscriber sub = redis.GetSubscriber(); + /// + /// Oggetto DB redis da impiegare x chiamate R/W + /// + private IDatabase redisDb = null!; + + #endregion Private Fields //#endregion Public Constructors @@ -130,7 +155,6 @@ namespace WebDoorCreator.UI.Data //#region Public Methods - ///// ///// Recupera l'elenco fasi (tutte) ///// @@ -1381,17 +1405,6 @@ namespace WebDoorCreator.UI.Data // { } // return answ; //} - - //#endregion Public Methods - - //#region Protected Fields - - protected const string passPhrase = "9eb4660f-8753-46bc-b23b-08759ba03fe9"; - - protected const string redisBaseAddr = "WDC"; - - protected const string rKeyCompany = $"{redisBaseAddr}:Cache:Company"; - //protected const string rKeyAnOrDip = $"{redisBaseAddr}:Cache:AnOrariDip"; //protected const string rKeyCalcOreFase = $"{redisBaseAddr}:Cache:CalcOreFase"; @@ -1437,9 +1450,6 @@ namespace WebDoorCreator.UI.Data //protected const string rKeyWeekStats = $"{redisBaseAddr}:Cache:WeekStats"; //protected static string connStringBBM = ""; - - protected Random rnd = new Random(); - //#endregion Protected Fields //#region Protected Methods @@ -1471,16 +1481,14 @@ namespace WebDoorCreator.UI.Data //#region Private Fields - - //private List cachedDataList = new List(); - - //#endregion Private Fields //#region Private Properties + #region Private Properties + /// /// Durata cache lunga (+ perturbazione percentuale +/-10%) /// @@ -1505,6 +1513,8 @@ namespace WebDoorCreator.UI.Data get => TimeSpan.FromSeconds(cacheTtlLong * 10 * rnd.Next(900, 1100) / 1000); } + #endregion Private Properties + //#endregion Private Properties //#region Private Methods diff --git a/WebDoorCreator.UI/Program.cs b/WebDoorCreator.UI/Program.cs index bb0d713..914ade4 100644 --- a/WebDoorCreator.UI/Program.cs +++ b/WebDoorCreator.UI/Program.cs @@ -1,11 +1,15 @@ +using Blazored.LocalStorage; +using Blazored.SessionStorage; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity.UI; using Microsoft.AspNetCore.Identity.UI.Services; +using Microsoft.AspNetCore.Localization; using Microsoft.EntityFrameworkCore; using StackExchange.Redis; +using System.Globalization; using WebDoorCreator.Data; using WebDoorCreator.UI.Areas.Identity; using WebDoorCreator.UI.Data; @@ -13,6 +17,8 @@ using WebDoorCreator.UI.Data; var builder = WebApplication.CreateBuilder(args); // configuration setup ConfigurationManager configuration = builder.Configuration; + +// AspNetCore Identity setup var connectionString = builder.Configuration.GetConnectionString("Identity.DB"); // REDIS setup @@ -32,15 +38,22 @@ builder.Services.Configure(options => options.Sender_EMail = configuration["ExternalProviders:MailKit:SMTP:SenderEmail"]; options.Sender_Name = configuration["ExternalProviders:MailKit:SMTP:SenderName"]; }); + // Add services to the container. builder.Services.AddDbContext(options => options.UseSqlServer(connectionString)); builder.Services.AddDatabaseDeveloperPageExceptionFilter(); builder.Services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores(); + builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); +builder.Services.AddSingleton(); builder.Services.AddScoped>(); +builder.Services.AddHttpContextAccessor(); +builder.Services.AddSingleton(redisMultiplexer); +builder.Services.AddBlazoredLocalStorage(); +builder.Services.AddBlazoredSessionStorage(); var app = builder.Build(); // Configure the HTTP request pipeline. @@ -55,6 +68,18 @@ else app.UseHsts(); } +// cultura US... +var supportedCultures = new[]{ + new CultureInfo("en-US") + }; +app.UseRequestLocalization(new RequestLocalizationOptions +{ + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = supportedCultures, + FallBackToParentCultures = false +}); +CultureInfo.DefaultThreadCurrentCulture = CultureInfo.CreateSpecificCulture("en-US"); + app.UseHttpsRedirection(); app.UseStaticFiles(); diff --git a/WebDoorCreator.UI/Shared/NavMenu.razor b/WebDoorCreator.UI/Shared/NavMenu.razor index 1e73a9b..ae538ba 100644 --- a/WebDoorCreator.UI/Shared/NavMenu.razor +++ b/WebDoorCreator.UI/Shared/NavMenu.razor @@ -20,8 +20,8 @@