using GPW.CORE.Data.DbModels; using GPW.CORE.UI.Data; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; namespace GPW.CORE.UI.Components { public partial class TimbrEditor { #region Protected Fields protected bool vetoUpd = false; #endregion Protected Fields #region Private Properties [Inject] private MessageService AppMServ { get; set; } [Inject] private IHttpContextAccessor httpContextAccessor { get; set; } [Inject] private IJSRuntime JSRuntime { get; set; } #endregion Private Properties #region Protected Properties [Inject] protected GpwDataService GDataServ { get; set; } protected bool IsUscita { get; set; } = false; protected List? ListTimbAppr { get; set; } protected List? ListTimbRich { get; set; } protected string txtMsgInOut { get => IsUscita ? "Uscita" : "Entrata"; } #endregion Protected Properties #region Public Properties [Parameter] public EventCallback CloseReq { get; set; } [Parameter] public DateTime DataRif { get; set; } [Parameter] public EventCallback ItemReset { get; set; } [Parameter] public EventCallback ItemUpdated { get; set; } [Parameter] public List ListTimb { get; set; } = new List(); #endregion Public Properties #region Private Methods private async Task ReloadData() { DateTime adesso = DateTime.Now; ListTimb = (ListTimb == null) ? new List() : ListTimb; // prendo primo record timbrature o oggi... if (ListTimb.Count > 0) { DataRif = ListTimb.FirstOrDefault().DataOra.Date.AddHours(adesso.Hour).AddMinutes(Math.Ceiling((double)adesso.Minute / 5) * 5); } else { DataRif = DateTime.Today.AddHours(adesso.Hour).AddMinutes(Math.Ceiling((double)adesso.Minute / 5) * 5); } await Task.Delay(1); if (ListTimb != null) { ListTimbAppr = ListTimb.Where(x => x.Approv == true).OrderByDescending(x => x.DataOra).ToList(); ListTimbRich = ListTimb.Where(x => x.Approv == false).OrderByDescending(x => x.DataOra).ToList(); } } #endregion Private Methods #region Protected Methods protected async void DoAdd() { var remoteIp = httpContextAccessor.HttpContext.Connection?.RemoteIpAddress.ToString(); TimbratureModel currRecord = new TimbratureModel() { Entrata = !IsUscita, Approv = false, CodTipoTimb = "NoTim", DataOra = DataRif, IdxDipendente = AppMServ.IdxDipendente, Ipv4 = $"{remoteIp}" }; // aggiungo alla lista... ListTimb.Add(currRecord); ListTimbRich.Add(currRecord); // aggiorno await GDataServ.TimbratureUpdate(currRecord); await Task.Delay(10); await ReloadData(); } /// /// Indico item selezionato /// protected async void DoClose() { await CloseReq.InvokeAsync(true); } /// /// Aggiorno e riporto update /// protected async void DoDelete(TimbratureModel currRecord) { // chiedo verifica if (!await JSRuntime.InvokeAsync("confirm", "Sicuro di voler eliminare la richiesta selezionata??")) return; // elimino dalla lista... ListTimb.Remove(currRecord); if (ListTimbAppr.Contains(currRecord)) { ListTimbAppr.Remove(currRecord); } if (ListTimbRich.Contains(currRecord)) { ListTimbRich.Remove(currRecord); } // aggiorno await GDataServ.TimbratureDelete(currRecord); await Task.Delay(10); await ReloadData(); await ItemUpdated.InvokeAsync(true); } /// /// Aggiorno e riporto update /// protected async void DoUpdate(TimbratureModel currRecord) { // elimino da lista ListTimb.Remove(currRecord); // scambio currRecord.Entrata = !currRecord.Entrata; // aggiorno await GDataServ.TimbratureUpdate(currRecord); // ri-aggiungo in lista... ListTimb.Add(currRecord); await ReloadData(); } protected override async Task OnInitializedAsync() { await ReloadData(); } #endregion Protected Methods } }