using global::Microsoft.AspNetCore.Components; using MP.Core.DTO; using MP.SPEC.Data; using NLog; using static EgwCoreLib.Utils.DtUtils; namespace MP.SPEC.Components { public partial class FLStatusList { #region Public Properties [Parameter] public Periodo CurrPeriodo { get; set; } = new Periodo(); [Parameter] public EventCallback> E_FluxSel { get; set; } [Parameter] public EventCallback E_TotalCount { get; set; } [Parameter] public EventCallback E_TotalRec { get; set; } [Parameter] public string IdxMaccSel { get; set; } = ""; [Parameter] public int NumRecPage { get; set; } [Parameter] public int PageNum { get; set; } #endregion Public Properties #region Protected Properties protected List FluxList { get => fluxList; set { fluxList = value; E_FluxSel.InvokeAsync(value).ConfigureAwait(false); } } protected List ListComplete { get; set; } = new List(); protected List ListPaged { get; set; } = new List(); [Inject] protected MpDataService MDataServ { get; set; } = null!; protected int numDay { get { var numRaw = (int)CurrPeriodo.Fine.Subtract(CurrPeriodo.Inizio).TotalDays; int answ = numRaw > 1 ? numRaw : 1; return answ; } } protected int numHour { get { var numRaw = (int)CurrPeriodo.Fine.Subtract(CurrPeriodo.Inizio).TotalHours; int answ = numRaw > 1 ? numRaw : 1; return answ; } } protected int TotalCount { get => totalCount; set { if (totalCount != value) { totalCount = value; E_TotalCount.InvokeAsync(value).ConfigureAwait(false); } } } protected int TotalRecords { get => totRecords; set { if (totRecords != value) { totRecords = value; E_TotalRec.InvokeAsync(value).ConfigureAwait(false); } } } #endregion Protected Properties #region Protected Methods protected override async Task OnParametersSetAsync() { await ReloadData(); } /// /// Aggiorno valori produzione alla data richiesta... /// /// protected async Task ReloadData() { isProcessing = true; await Task.Delay(1); if (!string.IsNullOrEmpty(IdxMaccSel) && (!IdxMaccSel.Equals(idxMaccLast) || !CurrPeriodo.Equals(lastPeriodo))) { idxMaccLast = IdxMaccSel; lastPeriodo = CurrPeriodo; ListComplete = await MDataServ.FluxLogPareto(IdxMaccSel, CurrPeriodo.Inizio, CurrPeriodo.Fine); TotalCount = ListComplete.Count; TotalRecords = ListComplete.Sum(x => x.Qty); FluxList = ListComplete.Select(x => x.CodFlux).ToList(); } // esegue paginazione UpdateTable(); isProcessing = false; await Task.Delay(1); } protected void UpdateTable() { // esegue paginazione if (TotalCount > NumRecPage) { ListPaged = ListComplete.Skip((PageNum - 1) * NumRecPage).Take(NumRecPage).ToList(); } else { ListPaged = ListComplete; } } #endregion Protected Methods #region Private Fields private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private string idxMaccLast = ""; private bool isProcessing = false; private int totalCount = 0; private int totRecords = 0; #endregion Private Fields #region Private Properties private List fluxList { get; set; } = new List(); private Periodo lastPeriodo { get; set; } = new Periodo(); #endregion Private Properties } }