Files
gpw_next/GPW.CORE.SMART/Components/Compo/UserQrCode.razor.cs
T
2024-08-23 13:10:21 +02:00

134 lines
3.9 KiB
C#

using EgwCoreLib.Razor;
using GPW.CORE.Data.DbModels;
using GPW.CORE.Smart.Data;
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
namespace GPW.CORE.Smart.Components.Compo
{
public partial class UserQrCode
{
#region Protected Methods
protected string getUrlCode(string baseUrl, string authKey)
{
return $"{baseUrl}jumper?idxDipendente={idxDipendente}&authKey={authKey}";
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (recordDip != null)
{
string baseUrl = ToggleData.isActive ? UrlLinkInt : UrlLinkExt;
//calcolo authKey valida x url --> escaped!
string authKeyFix = System.Web.HttpUtility.UrlEncode(recordDip.AuthKey);
string newCode = getUrlCode(baseUrl, authKeyFix);
if (rawCode != newCode)
{
rawCode = newCode;
await JSRuntime.InvokeVoidAsync("clearContent", $"qrCodeImg_{idxDipendente}");
await JSRuntime.InvokeVoidAsync("displayQr", $"qrCodeImg_{idxDipendente}", rawCode);
}
}
}
protected override async Task OnInitializedAsync()
{
initToggler();
await initConf();
await ReloadData();
}
protected string rawCode = "";
#endregion Protected Methods
#region Private Fields
private List<DipendentiModel> ListaDip = new List<DipendentiModel>();
#endregion Private Fields
#region Private Properties
private int _idxDip { get; set; } = 0;
[Inject]
private CoreSmartDataService CDService { get; set; } = null!;
[Inject]
private IConfiguration Configuration { get; set; } = null!;
private int idxDipendente
{
get => _idxDip;
set
{
_idxDip = value;
if (value > 0)
{
recordDip = ListaDip.FirstOrDefault(x => x.IdxDipendente == idxDipendente);
}
else
{
recordDip = null;
}
//StateHasChanged();
}
}
[Inject]
private IJSRuntime JSRuntime { get; set; } = null!;
private DipendentiModel? recordDip { get; set; } = null;
private Toggler.SelectGlobalToggle ToggleData { get; set; } = new Toggler.SelectGlobalToggle();
private string UrlLinkExt { get; set; } = "";
private string UrlLinkInt { get; set; } = "";
#endregion Private Properties
#region Private Methods
private async Task evToggled(Toggler.SelectGlobalToggle newTogData)
{
ToggleData = newTogData;
await Task.Delay(1);
}
/// <summary>
/// init valori da config
/// </summary>
/// <returns></returns>
private async Task initConf()
{
UrlLinkInt = Configuration.GetValue<string>("OptPar:UrlLinkInt") ?? "";
UrlLinkExt = Configuration.GetValue<string>("OptPar:UrlLinkExt") ?? "";
await Task.Delay(1);
}
private void initToggler()
{
ToggleData = new Toggler.SelectGlobalToggle()
{
leftString = "Link Esterno",
rightString = "Link Interno",
placardCss = "bg-light border-light text-dark",
};
}
private async Task ReloadData()
{
var rawList = await CDService.DipendentiGetAll();
ListaDip = rawList
.Where(x => x.Attivo == true)
.OrderBy(x => x.Cognome)
.ThenBy(x => x.Nome)
.ToList();
}
#endregion Private Methods
}
}