@attribute [Route($"{GuestConsts.Page_GuestDocs_Detail}")] @using Somnia.GuestLog.Models.DTOs; @using Somnia.GuestLog.Services; @using Microsoft.AspNetCore.WebUtilities; @inject IUserMessageService userMessage @inject IDialogService DialogService @inject NavigationManager Navigation @inject IGuestDocumentEntityService guestDocService @inject IStayEntryEntityService stayService Somnia - Guest Docs - Details Guest Document: @docId - @documentModel?.FullDocument @LanguageLocale.general_btnEdit @LanguageLocale.general_btnReturn @if (documentModel is not null) { Total Stays: @(guestStaysLoading ? "Loading..." : guestStayList.Count()) @LanguageLocale.dto_StayEntry_DateIn @LanguageLocale.dto_StayEntry_DateOut @LanguageLocale.dto_StayEntry_RoomCount @LanguageLocale.dto_StayEntry_RoomNumber @LanguageLocale.general_actions @context.DateIn @context.DateOut @context.RoomCount @context.RoomNumber @LanguageLocale.general_noResults } @code { [Parameter] public long docId { get; set; } GuestDocForm _form = null!; GuestDocumentDTO? documentModel = null; IEnumerable guestStayList = []; bool guestStaysLoading = true; protected override async Task OnInitializedAsync() { //Get model from db. documentModel = await guestDocService.GetLastVersionDtoByIdAsync(docId); if (documentModel is null) { userMessage.ShowMessage($"GuestDocument not found with ID: '{docId}'", MessageKind.Error); Navigation.NotFound(); return; } } private async Task LoadTabGuestStays() { //Only load when there is no data. if (guestStayList.Count() > 0) { return; } if (documentModel is null || documentModel.Id is null || documentModel.Version is null) { throw new InvalidOperationException(); } guestStaysLoading = true; guestStayList = await stayService.GetStaysWithGuest(documentModel.Id.Value); guestStaysLoading = false; } #region Event Handlers private void BtnEdit() { userMessage.ShowMessage("Not implemented yet!", MessageKind.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(GuestConsts.QueryParam_ReturnUrl, relativeUri) ]); Navigation.NavigateTo(uri); } #endregion }