using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Components; using System.Net.Http; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Components.Routing; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.Web.Virtualization; using Microsoft.JSInterop; using GPW.CORE.WRKLOG.old.Shared; using GPW.CORE.WRKLOG.old; using GPW.CORE.WRKLOG.old.Components; using GPW.CORE.Data.DbModels; using GPW.CORE.Data.DTO; using GPW.CORE.WRKLOG.old.Data; namespace GPW.CORE.WRKLOG.old.Pages { public partial class FastRec { private List ListFasi = new List(); private List ListRecords = new List(); private int _tipoSearch = 0; public int TipoSearch { get { return _tipoSearch; } set { if (!_tipoSearch.Equals(value)) { _tipoSearch = value; idxFaseSel = 0; } } } protected int startHour = 7; protected int endHour = 21; protected bool isLoading = false; private int idxFaseSel = 0; private int idxDipendente { get => AppMServ.IdxDipendente; } private void SelFase(int idxFase) { idxFaseSel = idxFase; } private void RecDone(bool fatto) { idxFaseSel = 0; } private async Task ReloadData() { isLoading = true; DateTime oggi = DateTime.Today; var rawData = await GDataServ.DailyDetails(idxDipendente, oggi, oggi.AddDays(1)); ListRecords = rawData.Where(x => x.DtRif == oggi).ToList(); await Task.Delay(1); checkHourRange(); await Task.Delay(1); isLoading = false; } protected override async Task OnInitializedAsync() { await ReloadData(); } private void checkHourRange() { int minHour = 9; int maxHour = 18; if (ListRecords != null) { int roundMin = 15; // per ogni giornata foreach (var giornata in ListRecords) { if (giornata.ListTimbr != null) { var minRecTimb = giornata.ListTimbr.Where(x => x.Entrata == true).OrderBy(x => x.DataOra).FirstOrDefault(); if (minRecTimb != null) { if (minHour > minRecTimb.DataOra.AddMinutes(-roundMin).Hour) { minHour = minRecTimb.DataOra.AddMinutes(-roundMin).Hour; } } } if (giornata.ListRA != null) { var minRecRa = giornata.ListRA.OrderBy(x => x.Inizio).FirstOrDefault(); if (minRecRa != null) { if (minHour > minRecRa.Inizio.AddMinutes(-roundMin).Hour) { minHour = minRecRa.Inizio.AddMinutes(-roundMin).Hour; } } } if (giornata.ListTimbr != null) { var maxRecTimb = giornata.ListTimbr.Where(x => x.Entrata == false).OrderByDescending(x => x.DataOra).FirstOrDefault(); if (maxRecTimb != null) { if (maxHour < maxRecTimb.DataOra.AddMinutes(roundMin).Hour + 1) { maxHour = maxRecTimb.DataOra.AddMinutes(roundMin).Hour + 1; } } } if (giornata.ListRA != null) { var maxRecRa = giornata.ListRA.OrderByDescending(x => x.Fine).FirstOrDefault(); if (maxRecRa != null) { if (maxHour < maxRecRa.Fine.AddMinutes(roundMin).Hour + 1) { maxHour = maxRecRa.Fine.AddMinutes(roundMin).Hour + 1; } } } } } startHour = minHour; endHour = maxHour; } } }