Files
mapo-mono/MP.MONO.UI/Components/MaintTaskPending.razor.cs
T
2022-06-13 15:15:55 +02:00

227 lines
5.7 KiB
C#

using Microsoft.AspNetCore.Components;
using MP.MONO.Core;
using MP.MONO.Data.DbModels;
namespace MP.MONO.UI.Components
{
public partial class MaintTaskPending
{
#region Public Properties
/// <summary>
/// Abilita modalità compatta (solo x home)
/// </summary>
[Parameter]
public bool compMode { get; set; } = false;
/// <summary>
/// Gestione evento x cambio modalità (pending/schedulati
/// </summary>
[Parameter]
public EventCallback<bool> reqChangeMode { get; set; }
#endregion Public Properties
#region Protected Methods
protected override async Task OnInitializedAsync()
{
await ReloadData();
}
#endregion Protected Methods
#region Private Fields
private int _MaxRecord = 1000;
/// <summary>
/// Valore limite (in ore) per permettere di chiudere un intervento
/// </summary>
private int hourLim = 24 * 1;
private List<ScheduledMaintModel>? ListRecords = null;
// FARE!!! filtro macchina
private int MachineId = 1;
/// <summary>
/// Valore limite (in %) per indicare come rosso una scadenza
/// </summary>
private int redLim = 10;
private List<ScheduledMaintModel>? SearchRecords = null;
/// <summary>
/// Valore limite (in %) per indicare come giallo una scadenza
/// </summary>
private int yelLim = 20;
#endregion Private Fields
#region Private Properties
private int _currPage { get; set; } = 1;
private int _limitDayPeriod { get; set; } = 7;
private int _numRecord { get; set; } = 10;
private int currPage
{
get => _currPage;
set
{
if (_currPage != value)
{
_currPage = value;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
}
private int currSMTaskId { get; set; } = 0;
private DateTime execDate { get; set; } = TimeUtils.DateRounded(DateTime.Now, 5, true);
private string execName { get; set; } = "";
private bool isLoading { get; set; } = false;
private int LimitDayPeriod
{
get => _limitDayPeriod;
set
{
if (_limitDayPeriod != value)
{
_limitDayPeriod = value;
currPage = 1;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
}
private int MaxRecord
{
get
{
return _MaxRecord;
}
set
{
if (_MaxRecord != value)
{
_MaxRecord = value;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
}
private int maxRemainHour
{
get => LimitDayPeriod * 24;
}
private string modalShow
{
get => showTaskConf ? "show" : "hide";
}
private int numRecord
{
get => _numRecord;
set
{
if (_numRecord != value)
{
_numRecord = value;
var pUpd = Task.Run(async () => await ReloadData());
pUpd.Wait();
}
}
}
private bool showTaskConf { get; set; } = false;
private int totalCount
{
get
{
int answ = 0;
if (SearchRecords != null)
{
answ = SearchRecords.Count;
}
return answ;
}
}
#endregion Private Properties
#region Private Methods
/// <summary>
/// Solleva evento cambio modo (Pending/Scheduled)
/// </summary>
private void ChangeMode()
{
reqChangeMode.InvokeAsync(true);
}
private async Task ConfirmDone()
{
// se ho dataora ed esecutore...
if (!string.IsNullOrEmpty(execName) && currSMTaskId > 0)
{
// salvo!
bool fatto = await MMDataService.SchedMaintTaskSetDone(MachineId, currSMTaskId, execDate, execName);
// rigenero!
await RegenTask();
// nascondo conferma
ShowConfirm(0);
}
}
private void ForceReload(int newNum)
{
numRecord = newNum;
}
private void ForceReloadPage(int newNum)
{
currPage = newNum;
}
private async Task RegenTask()
{
await MMDataService.SchedMaintTaskCreateMissing(MachineId);
await ReloadData();
}
private async Task ReloadData()
{
isLoading = true;
ListRecords = null;
await Task.Delay(1);
SearchRecords = await MMDataService.SchedMaintTaskGetFilt(MachineId, maxRemainHour, 0, MaxRecord);
ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList();
await Task.Delay(1);
await Task.Delay(1);
isLoading = false;
}
private void ShowConfirm(int SMTaskId)
{
showTaskConf = !showTaskConf;
currSMTaskId = SMTaskId;
}
#endregion Private Methods
}
}