using EgwCoreLib.Lux.Data.DbModel.Warehouse; namespace Lux.UI.Components.Compo.Warehouse { public partial class MatReqGroup { #region Public Properties [Parameter] public List AllRecords { get; set; } = null!; [Parameter] public EventCallback EC_Updated { get; set; } [Parameter] public string GrpName { get; set; } = null!; #endregion Public Properties #region Public Classes public class GrpSelect { #region Public Properties public string GroupName { get; set; } = ""; public List ListItemIds { get; set; } = new List(); #endregion Public Properties } #endregion Public Classes #region Protected Methods protected string IconCheckSel(MatReqModel currRec) { return ListSelected.Contains(currRec.MatReqID) ? "text-primary" : "text-secondary opacity-25"; } protected override Task OnParametersSetAsync() { isLoading = true; totalCount = AllRecords.Count; UpdateTable(); return base.OnParametersSetAsync(); } protected Task ToggleUid(MatReqModel currRec) { if (ListSelected.Contains(currRec.MatReqID)) { ListSelected.Remove(currRec.MatReqID); } else { ListSelected.Add(currRec.MatReqID); } // verifico se abilitare/togliere allselected... if (ListSelected.Count == 0) { allSelected = false; } else if (ListSelected.Count == totalCount) { allSelected = true; } UpdateTable(); GrpSelect payload = new GrpSelect() { GroupName = GrpName, ListItemIds = ListSelected }; return EC_Updated.InvokeAsync(payload); } #endregion Protected Methods #region Private Fields private bool allSelected = false; private int currPage = 1; private bool isLoading = false; private List ListRecords = new(); private List ListSelected = new(); private int numRecord = 5; private bool showDetail = false; private int totalCount = 0; #endregion Private Fields #region Private Properties private bool AllSelected { get => allSelected; set { if (allSelected != value) { allSelected = value; } } } private string ToggleIcon { get => showDetail ? "bi-chevron-down" : "bi-chevron-right"; } #endregion Private Properties #region Private Methods private void SaveNumRec(int newNum) { numRecord = newNum; currPage = 1; UpdateTable(); } private void SavePage(int newNum) { currPage = newNum; UpdateTable(); } private Task ToggleAll() { allSelected = !allSelected; if (allSelected) { ListSelected = AllRecords.Select(x => x.MatReqID).ToList(); } else { ListSelected.Clear(); } UpdateTable(); GrpSelect payload = new GrpSelect() { GroupName = GrpName, ListItemIds = ListSelected }; return EC_Updated.InvokeAsync(payload); } private void ToggleGruppo() { showDetail = !showDetail; } private void UpdateTable() { // fix paginazione ListRecords = AllRecords .OrderBy(x => x.ItemNav?.Description) .Skip(numRecord * (currPage - 1)) .Take(numRecord) .ToList(); isLoading = false; } #endregion Private Methods } }