using EgwCoreLib.Razor; using GPW.CORE.Data.DbModels; using GPW.CORE.Smart8.Data; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; namespace GPW.CORE.Smart8.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 ListaDip = new List(); #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); } /// /// init valori da config /// /// private async Task initConf() { UrlLinkInt = Configuration.GetValue("OptPar:UrlLinkInt") ?? ""; UrlLinkExt = Configuration.GetValue("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 } }