184 lines
6.3 KiB
C#
184 lines
6.3 KiB
C#
using EgwCoreLib.Razor;
|
|
using GPW.CORE.Data.DbModels;
|
|
using GPW.CORE6.Smart.Data;
|
|
using Microsoft.AspNetCore.Components;
|
|
using System.Text;
|
|
|
|
namespace GPW.CORE6.Smart.Components
|
|
{
|
|
public partial class InvioLinkEmail
|
|
{
|
|
#region Public Properties
|
|
|
|
[Parameter]
|
|
public int IdxDipAdmin { get; set; } = 0;
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Protected Methods
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
initToggler();
|
|
await initConf();
|
|
await ReloadData();
|
|
}
|
|
|
|
protected override async Task OnParametersSetAsync()
|
|
{
|
|
// verifico se user sia admin...
|
|
var listaRuoli = await CDService.Dip2RuoliGetAll();
|
|
var rigaDip = listaRuoli.FirstOrDefault(x => x.IdxDipendente == IdxDipAdmin && x.CodRuolo == "ResetAuthKey");
|
|
userIsAdmin = rigaDip != null;
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Private Fields
|
|
|
|
private bool isSendingData = false;
|
|
|
|
private List<DipendentiModel> ListaDip = new List<DipendentiModel>();
|
|
|
|
private bool userIsAdmin = false;
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Private Properties
|
|
|
|
[Inject]
|
|
private CoreSmartDataService CDService { get; set; } = null!;
|
|
|
|
[Inject]
|
|
private IConfiguration Configuration { get; set; } = null!;
|
|
|
|
private bool forceResetAuthKey { get; set; } = false;
|
|
|
|
private int idxDipendente { get; set; } = 0;
|
|
|
|
[Inject]
|
|
private MessageService MService { 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
|
|
|
|
/// <summary>
|
|
/// Effettua vero reset authKey dipendente...
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task doResetAuthKey()
|
|
{
|
|
var rigaDip = ListaDip.FirstOrDefault(x => x.IdxDipendente == idxDipendente);
|
|
if (rigaDip != null)
|
|
{
|
|
Guid newGuid = Guid.NewGuid();
|
|
string newAuthKey = $"{newGuid}";
|
|
rigaDip.AuthKey = newAuthKey.ToUpper();
|
|
// update!
|
|
await CDService.DipendentiUpdate(rigaDip);
|
|
}
|
|
await Task.Delay(1);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Invia email con link x accesso
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
private async Task doSendEmailAccessLink()
|
|
{
|
|
isSendingData = true;
|
|
await Task.Delay(1);
|
|
// recupero record dip da selezioanta...
|
|
if (idxDipendente > 0)
|
|
{
|
|
string authKey = "";
|
|
string destinatario = "";
|
|
// se riechiesto reset --> ricalcolo authKey x dip
|
|
if (forceResetAuthKey)
|
|
{
|
|
await doResetAuthKey();
|
|
await ReloadData();
|
|
}
|
|
var rigaDip = ListaDip.FirstOrDefault(x => x.IdxDipendente == idxDipendente);
|
|
if (rigaDip != null)
|
|
{
|
|
authKey = System.Web.HttpUtility.UrlEncode(rigaDip.AuthKey);
|
|
destinatario = rigaDip.Email;
|
|
|
|
// compongo testo messaggio
|
|
string oggetto = "Link autorizzazione device per GPW Core.Smart";
|
|
string userUrl = $"{UrlLinkInt}jumper?idxDipendente={idxDipendente}&authKey={authKey}";
|
|
string userWebUrl = $"{UrlLinkExt}jumper?idxDipendente={idxDipendente}&authKey={authKey}";
|
|
// corpo
|
|
StringBuilder sbBody = new StringBuilder();
|
|
sbBody.AppendLine("Hai ricevuto questa email su richiesta tua o dell'Admin per poter procedere a registrare un (nuovo) devices con GPW");
|
|
sbBody.AppendLine("");
|
|
sbBody.AppendLine("<hr/>");
|
|
sbBody.AppendLine("<b>Rete Interna</b>");
|
|
sbBody.AppendLine($"Per proseguire clicca sul <a href=\"{userUrl}\" target=\"_blank\">link seguente</a> (rete interna)");
|
|
//sbBody.AppendLine(userUrl);
|
|
sbBody.AppendLine("<hr/>");
|
|
sbBody.AppendLine("<b>Internet</b>");
|
|
sbBody.AppendLine($"Oppure sul <a href=\"{userWebUrl}\" target=\"_blank\">link seguente</a> (internet)");
|
|
//sbBody.AppendLine(userWebUrl);
|
|
sbBody.AppendLine("<hr/>");
|
|
sbBody.AppendLine("");
|
|
sbBody.AppendLine("");
|
|
sbBody.AppendLine("Team GPW EgalWare");
|
|
string msgBody = sbBody.ToString().Replace($"{Environment.NewLine}", "<br/>");
|
|
// invio
|
|
bool fatto = await CDService.sendEmailAsync(destinatario, oggetto, msgBody);
|
|
}
|
|
}
|
|
isSendingData = false;
|
|
await Task.Delay(1);
|
|
}
|
|
|
|
private async Task evToggled(Toggler.SelectGlobalToggle newTogData)
|
|
{
|
|
ToggleData = newTogData;
|
|
forceResetAuthKey = !ToggleData.isActive;
|
|
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 = "Reset + Invio",
|
|
rightString = "Solo Invio",
|
|
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
|
|
}
|
|
} |