@page "/user" @attribute [Authorize] @using SteUp.Shared.Components.Layout @using SteUp.Shared.Components.Layout.Overlay @using SteUp.Shared.Components.SingleElements @using SteUp.Shared.Components.SingleElements.MessageBox @using SteUp.Shared.Core.Authorization.Enum @using SteUp.Shared.Core.Dto @using SteUp.Shared.Core.Interface.IntegryApi @using SteUp.Shared.Core.Interface.System @using SteUp.Shared.Core.Services @using SteUp.Shared.Core.Utility @inject AppAuthenticationStateProvider AuthenticationStateProvider @inject IGenericSystemService GenericSystemService @inject IFileManager FileManager @inject IIntegryApiService IntegryApiService
@if (IsLoggedIn) { @* §6.16 Intestazione profilo *@

@UserSession.User.Fullname

@if (UserSession.User.KeyGroup is not null) {

@(((KeyGroupEnum)UserSession.User.KeyGroup).ConvertToHumanReadable())

}
@* Le voci distruttive portano l'icona nel tono danger e non hanno chevron. *@
}
@code { private bool IsLoggedIn { get; set; } private bool VisibleOverlay { get; set; } private string? _progressMessage; private string? CodHash { get; set; } = ""; private ConfirmMessageBox _logoutBox = null!; private Core.Helpers.StatusBadgeHelper.BadgeSpec ConnessioneBadge => NetworkService.ConnectionAvailable ? new Core.Helpers.StatusBadgeHelper.BadgeSpec("success", "ri-cloud-line", "Online") : new Core.Helpers.StatusBadgeHelper.BadgeSpec("danger", "ri-wifi-off-line", "Offline"); protected override async Task OnInitializedAsync() { IsLoggedIn = await UserSession.IsLoggedIn(); CodHash = LocalStorage.GetString("codHash"); StateHasChanged(); } private async Task ExportLog() { _progressMessage = "Invio dei log…"; VisibleOverlay = true; StateHasChanged(); try { var profiloAzienda = LocalStorage.GetString("codHash"); var email = new SendEmailDto { FromName = "Integry Log", To = "developer@integry.it", Subject = $"SteUP - Log del {DateTime.Today:d} di {UserSession.User.Username}", IsHtml = true, MsgText = $"Username: {UserSession.User.Username}
" + $"Profilo azienda: {profiloAzienda}
" + $"ProfileDb: {UserSession.ProfileDb}
" + $"Versione app: {GenericSystemService.GetCurrentAppVersion()}", Attachments = FileManager.GetFileForExport() }; await IntegryApiService.SendEmail(email); Snackbar.Add("Log inviati allo sviluppo", Severity.Success); } catch { Snackbar.Add("Invio dei log non riuscito. Controlla la connessione e riprova.", Severity.Error); } finally { VisibleOverlay = false; _progressMessage = null; StateHasChanged(); } } private async Task UpdateDb() { _progressMessage = "Sincronizzazione…"; VisibleOverlay = true; StateHasChanged(); try { await SteupDataService.CheckAndUpdateStatus(); Snackbar.Add("Ispezioni aggiornate", Severity.Success); } catch { Snackbar.Add("Sincronizzazione non riuscita. Controlla la connessione e riprova.", Severity.Error); } finally { VisibleOverlay = false; _progressMessage = null; StateHasChanged(); } } private async Task ConfirmLogout() { var result = await _logoutBox.ShowAsync(); if (result is not true) return; await AuthenticationStateProvider.SignOut(); IsLoggedIn = await UserSession.IsLoggedIn(); StateHasChanged(); } }