Files
gpw_next/GPW.CORE.WRKLOG/Pages/FastRec.razor.cs
T
2023-01-20 16:19:56 +01:00

142 lines
4.7 KiB
C#

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.Shared;
using GPW.CORE.WRKLOG;
using GPW.CORE.WRKLOG.Components;
using GPW.CORE.Data.DbModels;
using GPW.CORE.Data.DTO;
using GPW.CORE.WRKLOG.Data;
namespace GPW.CORE.WRKLOG.Pages
{
public partial class FastRec
{
private List<AnagFasiModel> ListFasi = new List<AnagFasiModel>();
private List<DailyDataDTO> ListRecords = new List<DailyDataDTO>();
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;
}
}
}