GuestLog - GuestDocumentList - Added filter for GuestDocuments.

This commit is contained in:
2026-08-03 21:33:30 +02:00
parent a5eea09eee
commit 2335c223ea
9 changed files with 126 additions and 35 deletions
@@ -13,32 +13,53 @@
<PageTitle>Somnia - Guest Docs</PageTitle>
<MudStack Row="true" Class="my-4">
<MudText Typo="Typo.h4" GutterBottom="true">Guest Documents</MudText>
<MudText Typo="Typo.h4" GutterBottom="true">@LanguageLocale.page_GuestDocList_pageTitle</MudText>
<MudSpacer />
<MudButton Variant="Variant.Filled" Color="Color.Success" Size="Size.Small" StartIcon="@Icons.Material.Filled.Add"
<MudButton Variant="Variant.Filled" Color="Color.Primary" Size="Size.Small"
StartIcon="@Icons.Material.Filled.Search" OnClick="() => SearchDataAsync()">
@LanguageLocale.general_btnSearch
</MudButton>
<MudButton Variant="Variant.Filled" Color="Color.Primary" Size="Size.Small" StartIcon="@Icons.Material.Filled.Add"
OnClick="() => BtnNewGuest()">
@LanguageLocale.page_GuestDocList_btnNewGuest
</MudButton>
</MudStack>
<MudSelect T="string" MultiSelection="true" FullWidth="true" Dense="true" Clearable="true" Margin="@Margin.Dense"
Class="filter-input category-filter" Label="Module" Placeholder="Select Modules"
SelectedValuesChanged="@FilterModuleValuesChanged">
@foreach (var module in _moduleList)
{
<MudSelectItem T="string" Value="@module">@module</MudSelectItem>
}
</MudSelect>
<MudPaper Class="pa-4 my-4" Elevation="2" Height="100%">
<MudForm Model="@docFilter">
<MudStack Row Breakpoint="Breakpoint.LgAndDown" StretchItems="StretchItems.All">
<MudStack Row style="margin-block: 0.2em;">
<MudSelect @bind-Value="docFilter.DocumentType" For="@(() => docFilter.DocumentType)"
Label="@LanguageLocale.dto_GuestDocument_DocumentType">
@foreach (string docType in dataListService.GetDataListByName(GuestConsts.DataList_DocumentTypes))
{
<MudSelectItem Value="docType">
@dataListService.GetLocalizedValue(GuestConsts.DataList_DocumentTypes, docType)
</MudSelectItem>
}
</MudSelect>
<MudTextField @bind-Value="docFilter.DocumentNumber" For="@(() => docFilter.DocumentNumber)"
Label="@LanguageLocale.dto_GuestDocument_DocumentNum" />
</MudStack>
<MudStack Row style="margin-block: 0.2em;">
<MudTextField @bind-Value="docFilter.Name" For="@(() => docFilter.Name)"
Label="@LanguageLocale.dto_GuestDocument_Name"
HelperText="@LanguageLocale.general_wildcardHelperText" HelperTextOnFocus="true" />
<MudTextField @bind-Value="docFilter.Surname" For="@(() => docFilter.Surname)"
Label="@LanguageLocale.dto_GuestDocument_Surname"
HelperText="@LanguageLocale.general_wildcardHelperText" HelperTextOnFocus="true" />
</MudStack>
</MudStack>
</MudForm>
</MudPaper>
<MudDataGrid @ref="_dataGrid" T="GuestDocumentDTO" Items="@guestDocList" Loading="@_dataLoading" ReadOnly="true"
Hideable="true" ColumnsPanelReordering="true">
Hideable="true" ColumnsPanelReordering="true" Elevation="2">
<ToolBarContent>
<MudText Typo="Typo.subtitle1">Document List</MudText>
<MudStack Class="ml-auto" Row="true" AlignItems="AlignItems.End">
<MudButton StartIcon="@Icons.Material.Outlined.Refresh" Variant="Variant.Outlined" Size="Size.Small"
OnClick="() => LoadDataAsync()">
@LanguageLocale.general_reloadData
</MudButton>
<MudText Typo="Typo.subtitle1">@LanguageLocale.page_GuestDocList_documentList</MudText>
<MudStack Class="ml-auto" Row="true" AlignItems="AlignItems.Center">
<MudCheckBox @bind-Value="_showAllData" Label="@LanguageLocale.page_GuestDocList_showAllElements"
LabelPlacement="Placement.Start" />
<MudButton StartIcon="@Icons.Material.Outlined.ViewColumn" Variant="Variant.Outlined" Size="Size.Small"
OnClick="(args) => BtnConfigureColumnsClick(args)">
@LanguageLocale.general_ConfigureColumns
@@ -67,9 +88,13 @@
</CellTemplate>
</TemplateColumn>
</Columns>
<PagerContent>
<MudDataGridPager T="GuestDocumentDTO" />
</PagerContent>
</MudDataGrid>
<MudMessageBox @ref="_msgBoxConfirmDelete" Title="Warning" CancelText="Cancel">
<MudMessageBox @ref="_msgBoxConfirmDelete" Title="@LanguageLocale.general_confirmTitle"
CancelText="@LanguageLocale.general_btnCancel">
<MessageContent>
@LanguageLocale.general_confirmDeleteMsg
</MessageContent>
@@ -85,8 +110,10 @@
private IEnumerable<GuestDocumentDTO> guestDocList = [];
private bool _dataLoading = true;
private HashSet<string> _moduleList = [];
private HashSet<string> _selectedModuleList = [];
private bool _showAllData = false;
private const int resultLimit = 200;
private GuestDocFilterDTO docFilter = new GuestDocFilterDTO();
private MudDataGrid<GuestDocumentDTO> _dataGrid = null!;
private MudMessageBox _msgBoxConfirmDelete = null!;
@@ -95,17 +122,24 @@
protected override async Task OnInitializedAsync()
{
await LoadDataAsync(showMsg: false);
@* _moduleList = guestDocList.Select(e => e.Module).ToHashSet(); *@
}
#region Data Loading
private async Task SearchDataAsync()
{
docFilter.Name = docFilter.Name?.ToUpper();
docFilter.Surname = docFilter.Surname?.ToUpper();
await LoadDataAsync();
}
private async Task LoadDataAsync(bool showMsg = true)
{
_dataLoading = true;
guestDocList = await GuestDocService.GetDtoListAsync();
int dataLimit = _showAllData ? 0 : resultLimit;
guestDocList = await GuestDocService.GetDtoListByFilterAsync(filter: docFilter, limit: dataLimit);
if (showMsg)
{
@@ -118,13 +152,6 @@
#region Event Handlers
private async Task FilterModuleValuesChanged(IReadOnlyCollection<string> newValues)
{
_selectedModuleList = [.. newValues];
await LoadDataAsync();
}
private async Task BtnConfigureColumnsClick(MouseEventArgs args)
{
_dataGrid.ShowColumnsPanel(args);