@page "/admin/users" @using Microsoft.AspNetCore.Authorization @using SmartDB.Components.Admin.Dtos @using SmartDB.Components.Admin.Services @using SmartDB.Data @attribute [Authorize(Policy = "AdminOnly")] @inject IUserManagementService UserService @inject ILogger Logger Gestione Utenti - Admin

Gestione Utenti

@if (!string.IsNullOrEmpty(successMessage)) { } @if (!string.IsNullOrEmpty(errorMessage)) { }
@if (activeTab == "list") {
@if (users != null && users.Any()) { @foreach (var user in users) { } } else { }
Email Nome Cognome Ruolo Stato Data Creazione Azioni
@user.Email @user.FirstName @user.LastName @GetUserRole(user.Id) @if (user.IsActive) { Attivo } else { Disattivo } @user.CreatedAt.ToShortDateString()
Nessun utente trovato
} @if (activeTab == "create") {

Aggiungi Nuovo Utente

}
@code { private string activeTab = "list"; private List? users; private CreateUserDto newUser = new(); private string successMessage = string.Empty; private string errorMessage = string.Empty; private bool isSubmitting = false; private Dictionary userRoles = new(); protected override async Task OnInitializedAsync() { await LoadUsers(); } private async Task LoadUsers() { try { users = await UserService.GetAllUsersAsync(); } catch (Exception ex) { Logger.LogError(ex, "Errore nel caricamento degli utenti"); errorMessage = "Errore nel caricamento degli utenti"; } } private async Task HandleCreateUser() { isSubmitting = true; try { var (success, message) = await UserService.CreateUserAsync(newUser); if (success) { successMessage = message; newUser = new(); await LoadUsers(); activeTab = "list"; } else { errorMessage = message; } } catch (Exception ex) { Logger.LogError(ex, "Errore nella creazione dell'utente"); errorMessage = "Errore nella creazione dell'utente"; } finally { isSubmitting = false; } } private async Task DeleteUser(string userId) { if (await JsConfirm("Sei sicuro di voler eliminare questo utente?")) { var (success, message) = await UserService.DeleteUserAsync(userId); if (success) { successMessage = message; await LoadUsers(); } else { errorMessage = message; } } } private async Task ToggleUserStatus(string userId) { var (success, message) = await UserService.ToggleUserStatusAsync(userId); if (success) { successMessage = message; await LoadUsers(); } else { errorMessage = message; } } private string GetUserRole(string userId) { // Per ora returniamo "User" - in futuro implementeremo la logica per recuperare i ruoli return "User"; } private async Task JsConfirm(string message) { // Placeholder - in un componente reale userebbero JS interop return true; } }