namespace Lux.UI.Components.Compo.WorkLoad { public partial class ItemSel { #region Public Properties [Parameter] public List ListItemGroup { get; set; } = null!; [Parameter] public FiltSelect SelFilt { get; set; } = null!; #endregion Public Properties #region Public Classes /// /// Filtro selezione items /// public class FiltSelect { #region Public Properties public string SearchVal { get; set; } = ""; public string SelCodGroup { get; set; } = ""; public Enums.ItemClassType SelType { get; set; } = Enums.ItemClassType.ND; #endregion Public Properties #region Public Methods public override bool Equals(object? obj) { if (obj == null) return false; if (!(obj is FiltSelect item)) return false; if (SelCodGroup != item.SelCodGroup) return false; if (SelType != item.SelType) return false; if (SearchVal != item.SearchVal) return false; return true; } public override int GetHashCode() { return base.GetHashCode(); } #endregion Public Methods } #endregion Public Classes #region Protected Fields protected List AllRecords = new List(); protected List ListRecords = new List(); #endregion Protected Fields #region Protected Properties [Inject] protected IItemService IService { get; set; } = null!; [Inject] protected IJSRuntime JSRuntime { get; set; } = null!; #endregion Protected Properties #region Protected Methods /// /// Selezione articolo x display info /// /// protected void DoSelect(ItemModel curRec) { selRecord = curRec; } protected override async Task OnParametersSetAsync() { if (!SelFilt.Equals(actFilt) || true) { actFilt = SelFilt; await ReloadDataAsync(); UpdateTable(); } } protected void SaveNumRec(int newNum) { numRecord = newNum; UpdateTable(); } protected void SavePage(int newNum) { currPage = newNum; UpdateTable(); } #endregion Protected Methods #region Private Fields private FiltSelect actFilt = new FiltSelect(); private int currPage = 1; private bool isLoading = false; private int numRecord = 10; private ItemModel? selRecord = null; private int totalCount = 0; #endregion Private Fields #region Private Methods private async Task DoCancel() { await ResetEdit(); UpdateTable(); } private string doCloneCss(ItemModel item) { return item.ItemType == Enums.ItemClassType.Bom ? "btn-warning" : "btn-success"; } private async Task DoSave(ItemModel currRec) { // salvo await IService.UpsertAsync(currRec); await ResetEdit(); UpdateTable(); } private async Task ReloadDataAsync() { isLoading = true; AllRecords = await IService.GetFiltAsync(actFilt.SelCodGroup, actFilt.SelType); // se ho ricerca testuale faccio filtro ulteriore... if (!string.IsNullOrEmpty(actFilt.SearchVal)) { AllRecords = AllRecords .Where(x => x.Description.Contains(actFilt.SearchVal, StringComparison.InvariantCultureIgnoreCase) || x.ExtItemCode.Contains(actFilt.SearchVal, StringComparison.InvariantCultureIgnoreCase) || x.SupplCode.Contains(actFilt.SearchVal, StringComparison.InvariantCultureIgnoreCase)) .ToList(); } totalCount = AllRecords.Count; } private Task ResetEdit() { // reset edit return ReloadDataAsync(); } /// /// Filtro e paginazione /// private void UpdateTable() { // fix paginazione ListRecords = AllRecords .Skip(numRecord * (currPage - 1)) .Take(numRecord) .ToList(); isLoading = false; } #endregion Private Methods } }