161 lines
4.8 KiB
C#
161 lines
4.8 KiB
C#
using GPW.CORE.Data.DbModels;
|
|
using GPW.CORE.Data.DTO;
|
|
using GPW.CORE.Smart.Data;
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
namespace GPW.CORE.Smart.Components
|
|
{
|
|
public partial class CompTimbra
|
|
{
|
|
#region Public Properties
|
|
|
|
[Parameter]
|
|
public int IdxDipCurr { get; set; } = 0;
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Protected Properties
|
|
|
|
[Inject]
|
|
protected MessageService MService { get; set; } = null!;
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Protected Methods
|
|
|
|
//private int idxDipCurr { get; set; } = 0;
|
|
protected override void OnInitialized()
|
|
{
|
|
MService.EA_TimbUpd += MService_EA_TimbUpd;
|
|
MService.EA_DateChanged += MService_EA_DateChanged;
|
|
MService.EA_CalModeChanged += MService_EA_CalModeChanged;
|
|
isRicTimb = MService.isRicTimb;
|
|
nextIsEntrata = MService.NextIsEntrata;
|
|
}
|
|
|
|
private Calendario.modoControllo modoCal { get; set; } = Calendario.modoControllo.showCalendar;
|
|
|
|
protected override async Task OnParametersSetAsync()
|
|
{
|
|
await Task.Delay(1);
|
|
await reloadData();
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Private Fields
|
|
|
|
/// <summary>
|
|
/// elenco principale record utente
|
|
/// </summary>
|
|
private List<DailyDataDTO>? listRecords = null;
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Private Properties
|
|
|
|
[Inject]
|
|
private CoreSmartDataService CDataServ { get; set; } = null!;
|
|
|
|
[Inject]
|
|
private CoreSmartDataService CSDataService { get; set; } = null!;
|
|
|
|
private DateTime dtCurr { get; set; } = DateTime.Today;
|
|
|
|
/// <summary>
|
|
/// Indica se si è in modalità mancata timbratura
|
|
/// </summary>
|
|
private bool isRicTimb { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// Indica quale deve essere prossima timbratura
|
|
/// </summary>
|
|
private bool nextIsEntrata { get; set; } = true;
|
|
|
|
|
|
private DailyDataDTO? todayDTO { get; set; } = null;
|
|
|
|
#endregion Private Properties
|
|
|
|
#region Private Methods
|
|
|
|
private bool isLoading
|
|
{
|
|
get => IdxDipCurr == 0;
|
|
}
|
|
|
|
private async void MService_EA_DateChanged()
|
|
{
|
|
dtCurr = MService.targetDate;
|
|
await Task.Delay(1);
|
|
await reloadData();
|
|
await Task.Delay(1);
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
|
|
private async void MService_EA_TimbUpd()
|
|
{
|
|
nextIsEntrata = MService.NextIsEntrata;
|
|
await Task.Delay(1);
|
|
await reloadData();
|
|
await Task.Delay(1);
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
private async void MService_EA_CalModeChanged()
|
|
{
|
|
modoCal = MService.modoCal;
|
|
//isRicTimb = (modoCal == Calendario.modoControllo.showTimbr);
|
|
isRicTimb = MService.isRicTimb;
|
|
await Task.Delay(1);
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
private async Task reloadData()
|
|
{
|
|
if (IdxDipCurr > 0)
|
|
{
|
|
var lastMode = modoCal;
|
|
modoCal = Calendario.modoControllo.showCalendar;
|
|
listRecords = null;
|
|
await Task.Delay(25);
|
|
// calcolo mese corrente e recupero dati
|
|
DateTime MeseStart = new DateTime(dtCurr.Year, dtCurr.Month, 1);
|
|
DateTime MeseEnd = MeseStart.AddMonths(1);
|
|
listRecords = await CSDataService.DailyDetails(IdxDipCurr, MeseStart, MeseEnd);
|
|
// recupero dati che mi servono...
|
|
await updateNextTimb();
|
|
await Task.Delay(25);
|
|
modoCal = lastMode;
|
|
}
|
|
}
|
|
|
|
private async Task updateNextTimb()
|
|
{
|
|
// verifico valore entrata/uscita x timbrature dipendente...
|
|
DateTime oggi = DateTime.Today.Date;
|
|
// recupero da dati correnti...
|
|
if (listRecords != null)
|
|
{
|
|
todayDTO = listRecords.FirstOrDefault(x => x.DtRif == oggi);
|
|
if (todayDTO != null)
|
|
{
|
|
nextIsEntrata = todayDTO.ListTimbr.Count % 2 == 0;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
List<TimbratureModel> ListTimbOggi = await CDataServ.TimbratureDay(oggi, IdxDipCurr);
|
|
if (ListTimbOggi != null)
|
|
{
|
|
nextIsEntrata = ListTimbOggi.Count % 2 == 0;
|
|
}
|
|
else
|
|
{
|
|
nextIsEntrata = true;
|
|
}
|
|
}
|
|
MService.NextIsEntrata = nextIsEntrata;
|
|
}
|
|
|
|
#endregion Private Methods
|
|
}
|
|
} |