e1addcf11b
- superadmin -url con ?config=debug
356 lines
12 KiB
C#
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
|
|
}
|
|
} |