using Blazored.LocalStorage;
using Blazored.SessionStorage;
using NLog;
namespace SHERPA.BBM.UI.Data
{
public class MessageService
{
#region Public Constructors
public MessageService(ILocalStorageService genLocalStorage, ISessionStorageService sessStore)
{
localStore = genLocalStorage;
sessionStore = sessStore;
}
#endregion Public Constructors
#region Public Events
///
/// Evento hide ricerca
///
public event Action? EA_HideSearch;
///
/// Evento aggiornamento ricerca
///
public event Action? EA_SearchUpdated;
///
/// Evento show ricerca
///
public event Action? EA_ShowSearch;
///
/// Evento modificata head pagina
///
public event Action? HeadChanged;
#endregion Public Events
#region Public Properties
///
/// Valore ricerca corrente
///
public string SearchVal
{
get => searchVal;
set
{
if (searchVal != value || string.IsNullOrEmpty(value))
{
searchVal = value;
if (EA_SearchUpdated != null)
{
EA_SearchUpdated?.Invoke();
}
}
}
}
public bool ShowSearch
{
get => showSearch;
set
{
if (showSearch != value)
{
showSearch = value;
if (showSearch)
{
if (EA_ShowSearch != null)
{
EA_ShowSearch?.Invoke();
}
}
else
{
if (EA_HideSearch != null)
{
EA_HideSearch?.Invoke();
}
}
}
}
}
#endregion Public Properties
#region Public Methods
public void NotifyHeadChanged() => HeadChanged?.Invoke();
///
/// Svuota localstorage (clear)
///
///
public async Task StoreLocalClear()
{
bool answ = false;
try
{
await localStore.ClearAsync();
answ = true;
}
catch (Exception ex)
{
Log.Error($"Eccezione in StoreLocalClear{Environment.NewLine}{ex}");
}
return answ;
}
///
/// Restituisce il valore richiesto da localstorage
///
/// Chiave
///
public async Task StoreLocalGet(string sKey)
{
string answ = "";
var result = await localStore.GetItemAsync(sKey);
if (result != null)
{
answ = result;
}
return answ;
}
///
/// Scrive il valore nel localstorage
///
/// Chiave
/// Valore associato
///
public async Task StoreLocalSet(string sKey, string sVal)
{
bool answ = false;
try
{
await localStore.SetItemAsStringAsync(sKey, sVal);
answ = true;
}
catch (Exception ex)
{
Log.Error($"Eccezione in StoreLocalSet{Environment.NewLine}{ex}");
}
return answ;
}
///
/// Svuota sessionstorage (clear)
///
///
public async Task StoreSessClear()
{
bool answ = false;
try
{
await sessionStore.ClearAsync();
answ = true;
}
catch (Exception ex)
{
Log.Error($"Eccezione in StoreLocalClear{Environment.NewLine}{ex}");
}
return answ;
}
///
/// Restituisce il valore richiesto da sessionstorage
///
/// Chiave
///
public async Task StoreSessGet(string sKey)
{
string answ = "";
var result = await sessionStore.GetItemAsync(sKey);
if (result != null)
{
answ = result;
}
return answ;
}
///
/// Scrive il valore nel sessionstorage (tab)
///
/// Chiave
/// Valore associato
///
public async Task StoreSessSet(string sKey, string sVal)
{
bool answ = false;
try
{
await sessionStore.SetItemAsStringAsync(sKey, sVal);
answ = true;
}
catch (Exception ex)
{
Log.Error($"Eccezione in StoreSessSet{Environment.NewLine}{ex}");
}
return answ;
}
///
/// Cerca un parametro utente salvato (se presente) e restituisce, se non trova restituisce ""
///
///
///
public string UsrParamGet(string key)
{
string answ = "";
if (userCurrParams.ContainsKey(key))
{
answ = userCurrParams[key];
}
return answ;
}
///
/// Cerca un parametro utente salvato (se presente) e restituisce, se non trova restituisce 0
///
///
/// Valore da restituire se NON trovato
///
public int UsrParamGetUInt(string key, int nullVal)
{
int answ = nullVal;
var sVal = UsrParamGet(key);
if (!string.IsNullOrEmpty(sVal))
{
int.TryParse(sVal, out answ);
}
return answ;
}
///
/// Upsert di un parametro utente
///
///
///
///
public string UsrParamSet(string key, string value)
{
string answ = "";
if (userCurrParams.ContainsKey(key))
{
userCurrParams[key] = value;
}
else
{
userCurrParams.Add(key, value);
}
return answ;
}
#endregion Public Methods
#region Protected Properties
protected ILocalStorageService localStore { get; set; } = null!;
protected ISessionStorageService sessionStore { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected void reportSearch()
{
if (EA_SearchUpdated != null)
{
EA_SearchUpdated?.Invoke();
}
}
#endregion Protected Methods
#region Private Fields
private Logger Log = LogManager.GetCurrentClassLogger();
private string searchVal = "";
private bool showSearch;
///
/// Dizionario parametri utente (in memoria x sessione utente)
///
private Dictionary userCurrParams = new Dictionary();
#endregion Private Fields
}
}