GuestLog - General Improvements.

- GuestDocument details - Added navigation to details for stays.
- StayEntry details - Added dialog to see details of GuestDocuments.
- StayEntry List - Added filter for result table.
- StayEntry New - Show suggested guests on GuestSearchDialog so no searchs are required in some cases.
- NavMenu - Removed default navigation links.
This commit is contained in:
2026-08-18 22:17:16 +02:00
parent 340bc583b7
commit 0de4e1ba10
12 changed files with 227 additions and 36 deletions
@@ -2,6 +2,7 @@
@using Somnia.GuestLog.Models.DTOs;
@using Somnia.GuestLog.Services;
@using Microsoft.AspNetCore.WebUtilities;
@inject ISnackbar Snackbar
@inject IDialogService DialogService
@@ -42,6 +43,7 @@
<MudTh>@LanguageLocale.dto_StayEntry_DateOut</MudTh>
<MudTh>@LanguageLocale.dto_StayEntry_RoomCount</MudTh>
<MudTh>@LanguageLocale.dto_StayEntry_RoomNumber</MudTh>
<MudTh>@LanguageLocale.general_actions</MudTh>
</HeaderContent>
<RowTemplate>
<MudTd DataLabel="@LanguageLocale.dto_StayEntry_DateIn">
@@ -56,6 +58,9 @@
<MudTd DataLabel="@LanguageLocale.dto_StayEntry_RoomNumber">
@context.RoomNumber
</MudTd>
<MudTd DataLabel="@LanguageLocale.general_actions">
<MudIconButton Icon="@Icons.Material.Filled.Info" OnClick="@(() => BtnViewStayDetails(context))" />
</MudTd>
</RowTemplate>
<NoRecordsContent>
<MudText>@LanguageLocale.general_noResults</MudText>
@@ -110,16 +115,6 @@
}
}
private void BtnEdit()
{
Snackbar.Add("Not implemented yet!", Severity.Info);
}
private void BtnReturn()
{
Navigation.NavigateTo(GuestConsts.Page_GuestDocs_List);
}
private async Task LoadTabGuestStays()
{
//Only load when there is no data.
@@ -137,4 +132,33 @@
guestStayList = await stayService.GetStaysWithGuest(documentModel.DocumentType, documentModel.DocumentNum);
guestStaysLoading = false;
}
#region Event Handlers
private void BtnEdit()
{
Snackbar.Add("Not implemented yet!", Severity.Info);
}
private void BtnReturn()
{
Navigation.NavigateTo(GuestConsts.Page_GuestDocs_List);
}
private void BtnViewStayDetails(StayEntryDTO item)
{
string itemId = $"{item.Id ?? -1}";
string uri = GuestConsts.Page_StayEntry_Detail.Replace(GuestConsts.Page_StayEntry_Detail_Param_Id, itemId);
string relativeUri = Navigation.ToBaseRelativePath(Navigation.Uri);
uri = QueryHelpers.AddQueryString(uri, [
new KeyValuePair<string, string?>(GuestConsts.QueryParam_ReturnUrl, relativeUri)
]);
Navigation.NavigateTo(uri);
}
#endregion
}
@@ -36,6 +36,9 @@
[Parameter]
public long StayId { get; set; }
[SupplyParameterFromQuery(Name = GuestConsts.QueryParam_ReturnUrl)]
public string? ReturnUrl { get; set; }
StayEntryDTO? stayModel = null;
protected override async Task OnInitializedAsync()
@@ -64,7 +67,8 @@
private void BtnReturn()
{
Navigation.NavigateTo(GuestConsts.Page_StayEntry_List);
string uri = ReturnUrl ?? GuestConsts.Page_StayEntry_List;
Navigation.NavigateTo(uri);
}
}
@@ -24,6 +24,10 @@
</MudButton>
</MudStack>
<MudPaper Class="pa-4 my-4" Elevation="2" Height="100%">
<StayEntryFilterForm @bind-Filter="stayFilter" />
</MudPaper>
<MudDataGrid @ref="_dataGrid" T="StayEntryDTO" Items="@stayEntryList" Loading="@_dataLoading" ReadOnly="true"
Elevation="2">
<ToolBarContent>
@@ -66,6 +70,12 @@
private bool _showAllData = false;
private const int resultLimit = 200;
private StayEntryFilterDTO stayFilter = new StayEntryFilterDTO()
{
DateInStart = DateTime.Today.AddDays(-14),
DateInEnd = DateTime.Today,
};
private IEnumerable<StayEntryDTO> stayEntryList = [];
private MudDataGrid<StayEntryDTO> _dataGrid = null!;
@@ -82,8 +92,7 @@
_dataLoading = true;
int dataLimit = _showAllData ? 0 : resultLimit;
stayEntryList = await StayEntryService.GetDtoListAsync();
//stayEntryList = await StayEntryService.GetDtoListAsync(filter: filter, limit: dataLimit);
stayEntryList = await StayEntryService.GetDtoListByFilterAsync(filter: stayFilter, limit: dataLimit);
if (showMsg)
{