using Microsoft.Extensions.Configuration; using MP.Data.DatabaseModels; using NLog.Fluent; using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MP.Data.Services { public class SharedMemService { #region Public Properties /// /// Dizionario macchine (shared) /// public Dictionary DictMacchine { get; set; } = new Dictionary(); /// /// Dizionario Menu /// public Dictionary> DictMenu { get; set; } = new Dictionary>(); #endregion Public Properties public bool MenuOk { get => AllMenuData.Count > 0; } private List AllMenuData { get; set; } = new List(); #region Public Methods /// /// Effettua setup memorie menu recuperando dati dal DB + popolando dizionario x livelli /// public void SetupMenu(List AllData) { // svuoto i valori in essere DictMenu.Clear(); // salvo nuovo set AllMenuData = AllData; // ciclo x recuperare i distinti TIPI di menu... var tList = AllMenuData .Select(x => x.TipoLink) .Distinct() .ToList(); // per ogni tipo --> ciclo! foreach (var item in tList) { var currMenu = AllMenuData .Where(x => x.TipoLink == item) .ToList(); if(!DictMenu.ContainsKey(item)) { DictMenu.Add(item, currMenu); } } } /// /// Restituisce il livello pagina dato URL /// - se contiene ?IdxMacc --> T2D (detail) /// - altrimenti --> T2H /// /// /// public string PageLevel(string fullUrl) { string answ = "T2H"; var urlPart = fullUrl.Split("/"); string pageUrl=urlPart.Last().ToLower(); // cerco nell'elenco... if (AllMenuData.Count > 0) { var sRec = AllMenuData .Where(x => x.NavigateUrl.ToLower() == pageUrl) .FirstOrDefault(); if (sRec != null) { answ = sRec.TipoLink; } } return answ; } /// /// Reset cache memory /// public void ResetCache() { DictMacchine = new Dictionary(); DictMenu = new Dictionary>(); } #endregion Public Methods } }