96 lines
4.4 KiB
Plaintext
96 lines
4.4 KiB
Plaintext
@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 l’utente; 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();
|
||
}
|
||
}
|
||
}
|