using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Stats.Data; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace MP.Stats.Pages { public partial class UserLog : ComponentBase, IDisposable { #region Private Fields private List ActionsList; private MP.Data.DatabaseModels.UserActionLog currRecord = null; private List ListRecords; private List SearchRecords; #endregion Private Fields #region Private Properties private SelectData currFilter { get { return MessageService.DetailFilter; } set { MessageService.DetailFilter = value; } } private int currPage { get; set; } = 1; private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; #endregion Private Properties #region Protected Properties [Inject] protected IJSRuntime JSRuntime { get; set; } [Inject] protected MessageService MessageService { get; set; } [Inject] protected NavigationManager NavManager { get; set; } [Inject] protected MpStatsService StatService { get; set; } protected int totalCount { get { int answ = 0; if (SearchRecords != null) { answ = SearchRecords.Count; } return answ; } } #endregion Protected Properties #region Private Methods private async Task reloadData() { isLoading = true; ActionsList = await StatService.ActionsGetAll(); SearchRecords = await StatService.StatUserLogGetAll(currFilter, MessageService.SearchVal); ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); isLoading = false; } #endregion Private Methods #region Protected Methods protected async Task DoFilter(SelectData newFilter) { SearchRecords = null; ListRecords = null; currFilter = newFilter; await reloadData(); } protected async Task ForceReload(int newNum) { numRecord = newNum; await reloadData(); } protected async Task ForceReloadPage(int newNum) { currPage = newNum; await reloadData(); } protected override async Task OnInitializedAsync() { numRecord = 10; MessageService.ShowSearch = false; MessageService.EA_SearchUpdated += OnSeachUpdated; await reloadData(); } protected void ResetData() { StatService.rollBackEdit(currRecord); currRecord = null; } protected async Task ResetFilter(SelectData newFilter) { currRecord = null; SearchRecords = null; ListRecords = null; currFilter = SelectData.Init(5, 7); await reloadData(); } protected async Task UpdateData() { currRecord = null; await reloadData(); } #endregion Protected Methods #region Public Methods public string checkSelect(int IdxLog) { string answ = ""; if (currRecord != null) { try { answ = (currRecord.IdxLog == IdxLog) ? "table-info" : ""; } catch { } } return answ; } public MP.Data.DatabaseModels.AzioniUL decodeAction(string azione) { // cerco MP.Data.DatabaseModels.AzioniUL data = ActionsList .Where(x => x.Azione == azione) .FirstOrDefault(); data = data != null ? data : new MP.Data.DatabaseModels.AzioniUL() { Azione = "ND", Class = "", Descrizione = "ND" }; return data; } public void Dispose() { MessageService.EA_SearchUpdated -= OnSeachUpdated; } public void OnSeachUpdated() { InvokeAsync(() => { UpdateData(); StateHasChanged(); }); } #endregion Public Methods } }