Files
webdoorcreator/WebDoorCreator.UI/Pages/DoorDefinition.razor.cs
T
2023-05-12 15:07:02 +02:00

228 lines
7.2 KiB
C#

using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.JSInterop;
using NLog;
using WebDoorCreator.Data;
using WebDoorCreator.Data.DbModels;
using WebDoorCreator.Data.Services;
using WebDoorCreator.UI.Data;
namespace WebDoorCreator.UI.Pages
{
public partial class DoorDefinition : IDisposable
{
#region Public Methods
public void Dispose()
{
ListBaseDoorOp = null;
orderStatus = null;
WDCUService.EA_CurrLanguage -= WDUService_EA_CurrLanguage;
QDataServ.CalcDonePipe.EA_NewMessage -= CalcDonePipe_EA_NewMessage;
}
#endregion Public Methods
#region Protected Properties
protected bool B_doorOpUpd { get; set; } = false;
protected string DoorSvgContent { get; set; } = "";
protected string ErrCode { get; set; } = "ERRORE";
protected int idDoor { get; set; } = 0;
protected int idOrd { get; set; } = 0;
protected bool IsErr { get; set; } = false;
[Inject]
protected IJSRuntime JSRuntime { get; set; } = null!;
[Inject]
protected NavigationManager NavManager { get; set; } = null!;
protected OrderStatusViewModel? orderStatus { get; set; } = null;
protected bool paramChanged { get; set; } = false;
[Inject]
protected QueueDataService QDataServ { get; set; } = null!;
protected string userLang { get; set; } = "EN";
[Inject]
protected WDCRefreshService WDCRService { get; set; } = null!;
[Inject]
protected WDCUserService WDCUService { get; set; } = null!;
[Inject]
protected WebDoorCreatorService WDService { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected async Task catchParamChange(bool ParamChanged)
{
await Task.Delay(1);
paramChanged = ParamChanged;
await InvokeAsync(() =>
{
StateHasChanged();
});
}
/// <summary>
/// gestione rilettura info
/// </summary>
/// <param name="caughtDefStep"></param>
/// <returns></returns>
protected async Task doReload(bool forceReset)
{
if (forceReset)
{
await ReloadData();
}
}
protected override async Task OnInitializedAsync()
{
await Task.Delay(1);
var uri = NavManager.ToAbsoluteUri(NavManager.Uri);
if (QueryHelpers.ParseQuery(uri.Query).TryGetValue("idOrd", out var _idOrd) && QueryHelpers.ParseQuery(uri.Query).TryGetValue("idDoor", out var _idDoor))
{
idOrd = int.Parse(_idOrd);
idDoor = int.Parse(_idDoor);
await ReloadData();
}
userLang = WDCUService.currLanguage ?? "EN";
WDCUService.EA_CurrLanguage += WDUService_EA_CurrLanguage;
QDataServ.CalcDonePipe.EA_NewMessage += CalcDonePipe_EA_NewMessage;
WDCRService.EA_UpdDoorOp += WDService_EA_DoorOpUpdated;
}
protected async Task ReloadData()
{
ListBaseDoorOp = null;
ListHwDoorOp = null;
orderStatus = null;
await Task.Delay(1);
var ListRecordDoorOp = await WDService.DoorOpGetByDoorId(idDoor);
if (ListRecordDoorOp != null)
{
ListHwDoorOp = ListRecordDoorOp;
ListBaseDoorOp = ListRecordDoorOp.Where(x => x.ObjectId == "Size" || x.ObjectId == "Profiles" || x.ObjectId == "Swing" || x.ObjectId == "Properties" || x.ObjectId == "Finishing").ToList();
// calcolo gli hw togliendo DoorOpBase
foreach (var item in ListBaseDoorOp)
{
ListHwDoorOp.Remove(item);
}
}
var domani = DateTime.Today.AddDays(1);
ListOrdersStatus = null;
await Task.Delay(1);
ListOrdersStatus = await WDService.OrderStatusGetFilt(0, 0, domani.AddYears(-2), domani);
if (ListOrdersStatus != null)
{
orderStatus = ListOrdersStatus.Where(x => x.OrderId == idOrd).FirstOrDefault();
}
await Task.Delay(1);
}
/// <summary>
/// gestione impostazione tipSize
/// </summary>
/// <param name="caughtDefStep"></param>
/// <returns></returns>
protected async Task setStep(int caughtDefStep)
{
setHwToNull = false;
await Task.Delay(1);
currDefStep = caughtDefStep;
if (currDefStep == 20)
{
setHwToNull = true;
}
}
#endregion Protected Methods
#region Private Fields
private static Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Private Properties
private int currDefStep { get; set; } = 10;
private List<DoorOpModel>? ListBaseDoorOp { get; set; } = null;
private List<DoorOpModel>? ListHwDoorOp { get; set; } = null;
private List<OrderStatusViewModel>? ListOrdersStatus { get; set; } = null;
private bool setHwToNull { get; set; } = false;
#endregion Private Properties
#region Private Methods
private async void CalcDonePipe_EA_NewMessage(object? sender, EventArgs e)
{
DoorSvgContent = "";
// aggiorno visualizzazione
PubSubEventArgs currArgs = (PubSubEventArgs)e;
// conversione on-the-fly SVG da mostrare
if (!string.IsNullOrEmpty(currArgs.newMessage))
{
string doorSvgVers = currArgs.newMessage;
// verifica che sia la MIA porta e quindi devo proseguire...
if (doorSvgVers.StartsWith($"{idDoor}.") || doorSvgVers.StartsWith($"{idDoor}:"))
{
if (doorSvgVers.Contains("."))
{
doorSvgVers = doorSvgVers.Replace(".", ":");
}
// fix ./:
var hasErr = await QDataServ.DoorErrExists(doorSvgVers);
if (hasErr)
{
var messErr = await QDataServ.DoorErrGet(doorSvgVers);
IsErr = true;
ErrCode = messErr;
}
else
{
DoorSvgContent = await QDataServ.DoorSvgGet(doorSvgVers);
}
//cerco su redis la porta in oggetto
//if (string.IsNullOrEmpty(DoorSvgContent))
//{
//}
await Task.Run(async () => await InvokeAsync(StateHasChanged));
}
}
}
private void WDService_EA_DoorOpUpdated()
{
B_doorOpUpd = WDCRService.isDoorOpUpd;
StateHasChanged();
}
private void WDUService_EA_CurrLanguage()
{
userLang = WDCUService.currLanguage ?? "EN";
StateHasChanged();
}
#endregion Private Methods
}
}