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
}
}