using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Core.DTO; using MP.IOC.Services; namespace MP.IOC.Components.Pages { public partial class RouteConf { #region Protected Properties protected string CssReset { get => string.IsNullOrEmpty(SearchVal) ? "btn-outline-secondary" : "btn-primary"; } [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; protected string SearchVal { get => _searchVal; set { if (_searchVal != value) { _searchVal = value; UpdateTable(); } } } #endregion Protected Properties #region Protected Methods protected string CheckSelect(WeightDTO currRec) { return SelRecord != null && SelRecord.Method == currRec.Method ? "table-info" : ""; } protected override async Task OnInitializedAsync() { //return base.OnInitializedAsync(); await ReloadData(); UpdateTable(); } protected void ResetSearch() { SearchVal = ""; //UpdateTable(); } #endregion Protected Methods #region Private Fields private string _searchVal = ""; private List ListComplete = new(); private List ListPaged = new(); private List ListSearch = new(); private int numRecPage = 10; private int pageNum = 1; private WeightDTO? SelRecord = null; private int totalCount = 0; #endregion Private Fields #region Private Properties [Inject] private IWeightProvider WService { get; set; } = null!; #endregion Private Properties #region Private Methods /// /// Edit record selezionato /// /// private void DoEdit(WeightDTO curRec) { SelRecord = curRec; } private void DoReset() { SelRecord = null; } private void DoSave(WeightDTO updRec) { // salvo e resetto... SelRecord = null; } private async Task ReloadData() { ListComplete = await WService.GetAllWeightsAsync(); } private void SaveNumRec(int newNum) { numRecPage = newNum; UpdateTable(); } private void SavePage(int newNum) { pageNum = newNum; UpdateTable(); } /// /// Imposta globalmente weight x tutte le chiavi... /// /// /// private async Task SetAllWeight(int newWeight) { if (!await JSRuntime.InvokeAsync("confirm", "Confermi di voler impostare questo peso per TUTTE le chiamate?")) return; newWeight = Math.Clamp(newWeight, 0, 100); foreach (var curRec in ListComplete) { curRec.NewWeight = newWeight; curRec.OldWeight = 100 - newWeight; WService.UpsertWeight(curRec); } // rileggo! await ReloadData(); UpdateTable(); } /// /// Imposta il peso del metodo "New" come richiesto, con eventuale check sui limiti 0-100 /// /// /// private async Task SetNewWeight(WeightDTO curRec, int newWeight) { newWeight = Math.Clamp(newWeight, 0, 100); curRec.NewWeight = newWeight; curRec.OldWeight = 100 - newWeight; // salvo! WService.UpsertWeight(curRec); // rileggo! await ReloadData(); UpdateTable(); } private void UpdateTable() { // effettuo eventuale ricerca + conteggio... if (string.IsNullOrEmpty(SearchVal)) { ListSearch = ListComplete; } else { ListSearch = ListComplete .Where(x => x.Method.Contains(SearchVal, StringComparison.InvariantCultureIgnoreCase)) .ToList(); } totalCount = ListSearch.Count(); // esegue paginazione if (totalCount > numRecPage) { ListPaged = ListSearch.Skip((pageNum - 1) * numRecPage).Take(numRecPage).ToList(); } else { ListPaged = ListSearch; } } #endregion Private Methods } }