Files
TecniStamp/TecniStamp/TecniStamp/Components/Pages/Anagrafiche/Ruoli.razor
2026-02-03 14:36:04 +01:00

96 lines
4.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@page "/anagrafiche/ruoli"
@using Microsoft.EntityFrameworkCore
@using TecniStamp.Model
@using TecniStamp.Model.Common
@using TecniStamp.Utils
@inject AuthenticationStateProvider auth
@rendermode InteractiveServer
<PageTitle>Ruoli</PageTitle>
<Breadcrumb Items="BreadcrumbList" />
<main role="main">
<div class="container-fluid h-100 mt-5">
<div class="row justify-content-start">
<div class="row row-cards">
<div class="col-auto ms-auto">
<div class="btn-list">
<a href="/Anagrafiche/Ruoli/Modifica" class="btn btn-primary btn-5 d-none d-sm-inline-block">
Nuovo ruolo
</a>
</div>
</div>
<div class="col-lg-12">
<div class="card">
<div class="table-responsive">
<RadzenDataGrid @ref="ruoliGrid" AllowFiltering="true" AllowColumnResize="true" AllowAlternatingRows="false" FilterMode="FilterMode.CheckBoxList" AllowSorting="true" PageSize="25"
AllowPaging="true" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true"
Data="@ruoli" ColumnWidth="300px" LogicalFilterOperator="LogicalFilterOperator.Or" SelectionMode="DataGridSelectionMode.Single">
<Columns>
<RadzenDataGridColumn Property="@nameof(RuoloViewModel.Nome)" Title="Nome" Width="160px" />
<RadzenDataGridColumn Context="order" Filterable="false" Sortable="false" TextAlign="TextAlign.Center" Width="200px">
<Template Context="ruolo">
<RadzenButton Icon="edit" ButtonStyle="ButtonStyle.Light" Variant="Variant.Flat" Size="ButtonSize.Medium" class="rz-my-1 rz-ms-1" Click="@(args => EditRow(ruolo))" @onclick:stopPropagation="true" />
<RadzenButton Icon="delete" ButtonStyle="ButtonStyle.Danger" Variant="Variant.Flat" Size="ButtonSize.Medium" Shade="Shade.Lighter" class="rz-my-1 rz-ms-1" Click="@(args => DeleteRow(ruolo))" @onclick:stopPropagation="true" />
</Template>
</RadzenDataGridColumn>
</Columns>
</RadzenDataGrid>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
@code {
List<RuoloViewModel> ruoli;
RadzenDataGrid<RuoloViewModel> ruoliGrid;
public List<BreadcrumbViewModel> BreadcrumbList { get; set; } = new();
/// <summary>
/// Carica la lista dei ruoli non eliminati, ordinandoli per nome.
/// </summary>
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
ruoli = (await _managerService.RuoloService.RicercaQueryable(
x => x.Eliminato == false,
includi: x => x.Include(y => y.UtenteCreazione),
ordinamento: x => x.OrderBy(y => y.Nome)))
.Select(x => (RuoloViewModel)x).ToList();
BreadcrumbList = await BreadcrumbUtils.BuildBreadcrumbByFeature(_managerService, "ruoli_Insert");
}
/// <summary>
/// Apre la pagina di modifica per il ruolo selezionato.
/// </summary>
private async Task EditRow(RuoloViewModel ruolo)
{
_navManager.NavigateTo($"/Anagrafiche/ruoli/Modifica/{ruolo.Id}");
}
/// <summary>
/// Chiede conferma ed elimina lutente; se confermato, aggiorna la lista
/// ricaricandola dal database.
/// </summary>
private async Task DeleteRow(RuoloViewModel ruolo)
{
var ok = await _dialogService.Confirm($"Vuoi davvero eliminare il ruolo {ruolo.Nome}?", "Conferma eliminazione", new ConfirmOptions { OkButtonText = "Sì", CancelButtonText = "No", Width = "400px" });
if (ok == true)
{
await _managerService.RuoloService.Elimina(ruolo.Id, await MembershipUtils.GetUserId(auth));
ruoli = (await _managerService.RuoloService.RicercaQueryable(
x => x.Eliminato == false,
ordinamento: x => x.OrderBy(y => y.Nome)))
.Select(x => (RuoloViewModel)x).ToList();
}
}
}