102 lines
3.0 KiB
C#
102 lines
3.0 KiB
C#
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
|
|
|
|
/// <summary>
|
|
/// Dizionario macchine (shared)
|
|
/// </summary>
|
|
public Dictionary<string, string> DictMacchine { get; set; } = new Dictionary<string, string>();
|
|
|
|
/// <summary>
|
|
/// Dizionario Menu
|
|
/// </summary>
|
|
public Dictionary<string, List<LinkMenu>> DictMenu { get; set; } = new Dictionary<string, List<LinkMenu>>();
|
|
|
|
#endregion Public Properties
|
|
|
|
public bool MenuOk
|
|
{
|
|
get => AllMenuData.Count > 0;
|
|
}
|
|
|
|
private List<LinkMenu> AllMenuData { get; set; } = new List<LinkMenu>();
|
|
|
|
#region Public Methods
|
|
|
|
/// <summary>
|
|
/// Effettua setup memorie menu recuperando dati dal DB + popolando dizionario x livelli
|
|
/// </summary>
|
|
public void SetupMenu(List<LinkMenu> 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);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Restituisce il livello pagina dato URL
|
|
/// - se contiene ?IdxMacc --> T2D (detail)
|
|
/// - altrimenti --> T2H
|
|
/// </summary>
|
|
/// <param name="fullUrl"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Reset cache memory
|
|
/// </summary>
|
|
public void ResetCache()
|
|
{
|
|
DictMacchine = new Dictionary<string, string>();
|
|
DictMenu = new Dictionary<string, List<LinkMenu>>();
|
|
}
|
|
|
|
#endregion Public Methods
|
|
}
|
|
} |