Files
Samuele Locatelli e1addcf11b Aggiunta possibilità "autoapprovazione" pdf SE
- superadmin
-url con ?config=debug
2024-06-19 09:25:24 +02:00

356 lines
12 KiB
C#

using Microsoft.AspNetCore.Components;
using Newtonsoft.Json;
using WebDoorCreator.Data.DbModels;
using WebDoorCreator.Data.Services;
using WebDoorCreator.UI.Components.SvgComp;
using WebDoorCreator.UI.Data;
using static WebDoorCreator.UI.Data.WDCRefreshService;
namespace WebDoorCreator.UI.Components.Hardware
{
public partial class HardwareNewPanel : IDisposable
{
#region Public Properties
[Parameter]
public int DoorId { get; set; } = 0;
[Parameter]
public EventCallback<bool> E_act2Rel { get; set; }
[Parameter]
public EventCallback<DoorOpModel> E_recordUpdate { get; set; }
[Parameter]
public EventCallback<DoorOpModel> E_selTemplate { get; set; }
[Parameter]
public bool HwAdded { get; set; } = false;
[Parameter]
public string HwCode { get; set; } = "";
[Parameter]
public string HwLabel { get; set; } = "";
[Parameter]
public string Lingua { get; set; } = "EN";
[CascadingParameter]
public string UserId { get; set; } = "";
[CascadingParameter(Name = "orderStatus")]
public int orderStatus { get; set; } = 10;
#endregion Public Properties
#region Public Methods
public void Dispose()
{
WDCRefresh.EA_ConfDoorOp -= WDCRefresh_EA_ConfDoorOp;
}
#endregion Public Methods
#region Protected Properties
protected bool _isDoorOpConf { get; set; } = false;
protected bool B_doorOpUpd
{
get => WDCRService.isDoorOpUpd;
set => WDCRService.isDoorOpUpd = value;
}
protected List<DoorOpModel> DoorOp2ModList { get; set; } = new List<DoorOpModel>();
protected List<DoorOpModel>? DoorOpList { get; set; } = null!;
protected int HwInst
{
get
{
int answ = 0;
if (DoorOpList != null)
{
answ = DoorOpList
.Where(x => x.ObjectId == HwCode)
.ToList()
.Count();
}
return answ;
}
}
//protected int instNum { get; set; } = 1;
protected bool isLoading { get; set; } = false;
protected List<DoorOpModel>? ListRecord { get; set; } = null;
[Inject]
protected WDCRefreshService WDCRefresh { get; set; } = null!;
[Inject]
protected WDCRefreshService WDCRService { get; set; } = null!;
[Inject]
protected WebDoorCreatorService WDCService { get; set; } = null!;
[Inject]
protected WDCVocabularyService WDVService { get; set; } = null!;
[Inject]
protected NavigationManager NavMan { get; set; } = null!;
[Inject]
protected WDCUserService WDCUService { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected async Task exeFun(HwSvgObj.ActionReq action)
{
await Task.Delay(1);
switch (action)
{
case HwSvgObj.ActionReq.Minus:
// nulla (x ora)
break;
case HwSvgObj.ActionReq.Plus:
await hwToAdd("");
break;
case HwSvgObj.ActionReq.Select:
default:
await E_act2Rel.InvokeAsync(true);
break;
}
}
protected int getDoorOpInstNum(int doorOpId)
{
int answ = 0;
if (DoorOpList != null)
{
answ = DoorOpList.FindIndex(x => x.DoorOpId == doorOpId);
}
return answ + 1;
}
protected async Task hwToAdd(string message)
{
await Task.Delay(1);
DateTime adesso = DateTime.Now;
List<DoorOpModel> listOp = new List<DoorOpModel>();
if (HwCode != null)
{
var listRecordFolder = await WDCService.ListValuesGetAll(HwCode, "Folder");
var listRecordTmp = await WDCService.ListValuesGetAll(HwCode, "template");
if (listRecordTmp!.Count == 0)
{
listRecordTmp = await WDCService.ListValuesGetAll(HwCode, "shape");
}
Dictionary<string, List<string>> defaultDict = new Dictionary<string, List<string>>();
List<string> listDefVal = new List<string>();
Dictionary<string, string> actDict = new Dictionary<string, string>();
List<string> defaultParamsList = new List<string>();
string default2Design = "";
if (listRecordFolder != null)
{
var firstFolder = listRecordFolder.FirstOrDefault();
if (firstFolder != null)
{
actDict.Add(firstFolder.FieldName, firstFolder.Value.Trim());
if (listRecordTmp != null)
{
var listRecordTemplates = listRecordTmp.Where(x => x.Value.Contains(firstFolder.Value)).ToList();
if (listRecordTemplates != null)
{
var firstTemplate = listRecordTemplates.FirstOrDefault();
if (firstTemplate != null)
{
if (firstTemplate.DefaultVal != "")
{
default2Design = firstTemplate.DefaultVal;
}
else
{
default2Design = "1";
}
actDict.Add(firstTemplate.FieldName, firstTemplate.Value.Trim());
}
}
}
}
var listRecordGP = await WDCService.ListValuesGetAll(HwCode, $"Graphic Parameters{default2Design}");
if (listRecordGP != null)
{
foreach (var item in listRecordGP)
{
if (item.isSerializable && item.DefaultVal.Contains(","))
{
listDefVal = item.DefaultVal.Trim().Split(",").ToList();
actDict.Add(item.Value.Trim(), item.DefaultVal.Trim().Split(",")[0].Split("/")[0]);
}
else
{
if (item.DefaultVal.Contains("/"))
{
listDefVal = new List<string>() { item.DefaultVal.Trim().Split("/")[0] };
actDict.Add(item.Value.Trim(), item.DefaultVal.Trim().Split("/")[0]);
}
else
{
listDefVal = new List<string>() { item.DefaultVal.Trim() };
actDict.Add(item.Value.Trim(), item.DefaultVal.Trim());
}
}
//defaultParamsList.Add(listDefVal);
defaultDict.Add(item.Value.Trim(), listDefVal);
}
//actDict.Add(HwToShow.TableName, actParamsList);
var jsonDef = JsonConvert.SerializeObject(defaultDict);
var jsonAct = JsonConvert.SerializeObject(actDict);
DoorOpModel doorOpToAdd = new DoorOpModel()
{
DateIns = adesso,
DateMod = adesso,
UserIdIns = UserId,
UserIdMod = UserId,
ObjectId = HwCode,
DoorId = DoorId,
JsoncConfigVal = jsonDef,
JsoncActVal = jsonAct
};
// se debug + superadmin --> auto confirm
if (autoApprove)
{
doorOpToAdd.userConfirm = UserId;
doorOpToAdd.DtConfirm = DateTime.Now;
}
listOp.Add(doorOpToAdd);
// salvo Door OP associate
bool fatto = await WDCService.DoorOpInsert(DoorId, listOp);
if (fatto)
{
//hwAdd = fatto;
//await InvokeAsync(StateHasChanged);
await ReloadData();
}
}
}
}
}
private bool autoApprove = false;
/// <summary>
/// Gestione update da oggetto sottostante
/// </summary>
/// <param name="currItem"></param>
/// <returns></returns>
protected async Task manageUpdate(DoorOpModel currItem)
{
await Task.Delay(1);
// aggiorna nelle DoorOpList...
if (DoorOpList != null)
{
var item2rem = DoorOpList.Where(x => x.DoorOpId == currItem.DoorOpId).FirstOrDefault();
if (item2rem != null)
{
DoorOp2ModList.Remove(item2rem);
}
await Task.Delay(1);
B_doorOpUpd = true;
DoorOp2ModList.Add(currItem);
}
}
/// <summary>
/// Blazor: get query parm from the URL
/// </summary>
/// <param name="parmName"></param>
/// <returns></returns>
protected string GetQueryParm(string parmName)
{
var uriBuilder = new UriBuilder(NavMan.Uri);
var q = System.Web.HttpUtility.ParseQueryString(uriBuilder.Query);
return q[parmName] ?? "";
}
protected override async Task OnInitializedAsync()
{
await Task.Delay(1);
var currMode = GetQueryParm("currMode");
if (!string.IsNullOrEmpty(currMode) && WDCUService.userRole == "SuperAdmin")
{
autoApprove = currMode.Equals("debug");
}
WDCRefresh.EA_ConfDoorOp += WDCRefresh_EA_ConfDoorOp;
}
protected override async Task OnParametersSetAsync()
{
await ReloadData();
}
protected async Task setRefOnDelete(bool isDel)
{
if (isDel)
{
await ReloadData();
}
}
protected string translate(string lemma)
{
string answ = "";
answ = WDVService.Traduci(Lingua, lemma);
return answ;
}
#endregion Protected Methods
#region Private Methods
private async Task ReloadData()
{
isLoading = true;
//await Task.Delay(50);
await InvokeAsync(StateHasChanged);
ListRecord = null;
DoorOpList = null;
await Task.Delay(1);
ListRecord = await WDCService.DoorOpGetByDoorId(DoorId);
if (ListRecord != null)
{
DoorOpList = ListRecord.Where(x => (x.DoorId == DoorId) && (x.ObjectId == HwCode)).ToList();
}
isLoading = false;
//await Task.Delay(50);
await InvokeAsync(StateHasChanged);
}
private void WDCRefresh_EA_ConfDoorOp(object? sender, EventArgs e)
{
DOPEventArgs currArgs = (DOPEventArgs)e;
// SE sono sula porta indicata + objId corretto --> refresh
if (currArgs.DoorId == DoorId && currArgs.ObjectId == HwCode)
{
var pupd = InvokeAsync(async () => await ReloadData());
}
}
#endregion Private Methods
}
}