using Microsoft.AspNetCore.Components; using MP.Data.DatabaseModels; using MP.Data.DTO; using MP.Data.Services; using MP_TAB3.Pages; using Newtonsoft.Json; using NLog; using System.Diagnostics; namespace MP_TAB3.Components { public partial class CmpTop { #region Public Properties [Parameter] public List CurrMenuItems { get; set; } = new List(); [Parameter] public EventCallback EA_UserIsOk { get; set; } #endregion Public Properties #region Protected Fields protected string ResetClass = "btn-primary"; #endregion Protected Fields #region Protected Properties protected string CurrOprTknLS { get; set; } = null!; //protected Guid CurrDevGuid { get; set; } protected string LastOpenedPage { get; set; } = null!; protected string CurrMacc { get; set; } = null!; protected string CurrOprTknRedis { get; set; } = null!; protected int expLoginType { get; set; } = 0; protected bool HideMenu { get => NavMan.Uri.Contains("reg-new-device"); } [Inject] protected ListSelectDataSrv MDataService { get; set; } = null!; [Inject] protected MessageService MsgServ { get; set; } = null!; [Inject] protected SharedMemService MStor { get; set; } = null!; [Inject] protected NavigationManager NavMan { get; set; } = null!; [Inject] protected SharedMemService SMServ { get; set; } = null!; [Inject] protected TabDataService TDService { get; set; } = null!; #endregion Protected Properties #region Protected Methods protected async Task RefreshLogIn(string decodValue) { bool done = false; if (expLoginType == 0) { done = await MsgServ.DoLogIn(decodValue, false); } else { done = await MsgServ.DoLogIn(decodValue, true); } if (done) { if (!string.IsNullOrEmpty(LastOpenedPage) && !string.IsNullOrEmpty(CurrMacc)) { NavMan.NavigateTo(LastOpenedPage); } else { NavMan.NavigateTo("status-map"); } } } protected async Task ForceReload() { Stopwatch sw = new Stopwatch(); sw.Start(); Log.Info("Start ForceReload"); ResetClass = "btn-warning"; await InvokeAsync(StateHasChanged); var currToken = await MsgServ.GetCurrOperDtoLSAsync(); var lastOpr = await MsgServ.GetLastMatrOprAsync(); // reset cache varie await MsgServ.ClearLocalStor(); await MsgServ.ClearSessionStor(); await MDataService.FlushCache(); // salvo di nuovo opr await MsgServ.SetLastMatrOprAsync(lastOpr); await MsgServ.SetCurrOperDtoLSAsync(currToken); // reload MStor await ReloadMemStor(); // calcolo tempo esecuzione sw.Stop(); int delta = 500 - (int)sw.ElapsedMilliseconds; delta = delta > 0 ? delta : 50; await Task.Delay(delta); ResetClass = "btn-primary"; // await InvokeAsync(StateHasChanged); Log.Info($"ForceReload completed in {sw.ElapsedMilliseconds}ms"); // ricarica pagina! NavMan.NavigateTo("status-map"); } protected async Task backToSM() { await Task.Delay(1); if (!NavMan.Uri.Contains("reg-new-device")) { await MsgServ.IdxMaccSet(""); NavMan.NavigateTo("status-map"); } } protected override async Task OnInitializedAsync() { await Task.Delay(1); expLoginType = SMServ.GetConfInt("TAB_TypeScadLogin"); var CurrDevGuid = await MsgServ.GetCurrDevGuidLSAsync(); //if (string.IsNullOrEmpty(CurrDevGuid.ToString())) if (CurrDevGuid == Guid.Empty) { CurrDevGuid = Guid.NewGuid(); await MsgServ.SetCurrDevGuidLSAsync(CurrDevGuid); } LastOpenedPage = await MsgServ.LastOpenedPageGet(); CurrMacc = await MsgServ.IdxMaccGet(); CurrOprTknLS = await MsgServ.GetCurrOperDtoLSAsync(); var decodedUrl = Uri.UnescapeDataString(CurrOprTknLS); if (!string.IsNullOrEmpty(CurrOprTknLS)) { var decryptedData = MsgServ.DecryptData(CurrOprTknLS); if (!string.IsNullOrEmpty(decryptedData)) { var oprObj = JsonConvert.DeserializeObject(decryptedData); if (oprObj != null) { MsgServ.RigaOper = oprObj.currOpr; } } } CurrOprTknRedis = await TDService.OperatoreGetRedis(MatrOpr, CurrDevGuid); if (string.IsNullOrEmpty(CurrOprTknRedis)) { if (!NavMan.Uri.Contains("reg-new-device")) { NavMan.NavigateTo("reg-new-device", true); } } else if (!string.IsNullOrEmpty(CurrOprTknRedis) && CurrOprTknRedis == CurrOprTknLS) { await RefreshLogIn(decodedUrl); await EA_UserIsOk.InvokeAsync(true); } } protected async Task ReloadMemStor() { // in primis svuoto... MStor.ClearCache(); // rileggo link var allData = await MDataService.ListLinkAll(); MStor.SetupMenu(allData); // fix config... var allConf = await MDataService.ConfigGetAll(); MStor.SetConfig(allConf); // fix MSFD... var allMSFD = await TDService.VMSFDGetAll(); MStor.SetMsfd(allMSFD); // fix slave var macSlave = await TDService.Macchine2Slave(); MStor.SetM2S(macSlave); // fix elenco eventi var allEvents = await TDService.AnagEventiGetAll(); MStor.SetEventi(allEvents); // fix elenco stati var allStati = await TDService.AnaStatiGetAll(); MStor.SetStati(allStati); // non da farsi globalmente // fix macchine var allMach = await // MDataService.MacchineByMatrOper(0); MStor.DictMacchine = allMach.ToDictionary(x => // x.IdxMacchina, x => $"{x.IdxMacchina} | {x.Nome}"); // fix vocabolario var allVoc = TDService.VocabolarioGetAll(); MStor.SetVocab(allVoc); // resetto il tabDServ await TDService.FlushCache(); // ricarica la config... TDService.SetupConfig(); } #endregion Protected Methods #region Private Fields private static Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields #region Private Properties private int MatrOpr { get => MsgServ.MatrOpr; } private string UserName { get => MsgServ.CognomeNome; } #endregion Private Properties } }