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