Files
GPW/GPW.CORE.UI/Components/TimbrEditor.razor.cs
T
2022-01-11 12:20:04 +01:00

187 lines
5.0 KiB
C#

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<TimbratureModel>? ListTimbAppr { get; set; }
protected List<TimbratureModel>? ListTimbRich { get; set; }
protected string txtMsgInOut
{
get => IsUscita ? "Uscita" : "Entrata";
}
#endregion Protected Properties
#region Public Properties
[Parameter]
public EventCallback<bool> CloseReq { get; set; }
[Parameter]
public DateTime DataRif { get; set; }
[Parameter]
public EventCallback<bool> ItemReset { get; set; }
[Parameter]
public EventCallback<bool> ItemUpdated { get; set; }
[Parameter]
public List<TimbratureModel> ListTimb { get; set; } = new List<TimbratureModel>();
#endregion Public Properties
#region Private Methods
private async Task ReloadData()
{
DateTime adesso = DateTime.Now;
ListTimb = (ListTimb == null) ? new List<TimbratureModel>() : 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();
}
/// <summary>
/// Indico item selezionato
/// </summary>
protected async void DoClose()
{
await CloseReq.InvokeAsync(true);
}
/// <summary>
/// Aggiorno e riporto update
/// </summary>
protected async void DoDelete(TimbratureModel currRecord)
{
// chiedo verifica
if (!await JSRuntime.InvokeAsync<bool>("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);
}
/// <summary>
/// Aggiorno e riporto update
/// </summary>
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
}
}