GuestLog - User message improvements

- Added UserMessageService to have common methods for showing messages and errors to the user.
- Added Result record so services can return status on operation error (so it can be shown in the UI messages).
- Updated services to use the new Result record.
- Updated pages to use the new IUserMessageService.
This commit is contained in:
2026-08-23 21:57:26 +02:00
parent 0de4e1ba10
commit 511bd023f2
22 changed files with 239 additions and 80 deletions
@@ -4,7 +4,7 @@
@using Somnia.GuestLog.Services;
@using Microsoft.AspNetCore.WebUtilities;
@inject ISnackbar Snackbar
@inject IUserMessageService userMessage
@inject IDialogService DialogService
@inject NavigationManager Navigation
@inject IGuestDocumentService guestDocService
@@ -92,7 +92,7 @@
{
if (docId is null)
{
Snackbar.Add("No GuestDocument provided!!", Severity.Error);
userMessage.ShowMessage("No GuestDocument provided!!", MessageKind.Error);
Navigation.NotFound();
return;
}
@@ -100,7 +100,7 @@
GuestDocIdDTO? docIdModel = GuestDocIdDTO.DecodeFromString(docId);
if (docIdModel is null)
{
Snackbar.Add($"Provided GuestDocId can't be decoded: '{docId}'", Severity.Error);
userMessage.ShowMessage($"Provided GuestDocId can't be decoded: '{docId}'", MessageKind.Error);
Navigation.NotFound();
return;
}
@@ -109,7 +109,7 @@
documentModel = await guestDocService.GetDtoByIdAsync(docIdModel.DocumentType, docIdModel.DocumentNum);
if (documentModel is null)
{
Snackbar.Add($"GuestDocument not found with ID: '{docId}'", Severity.Error);
userMessage.ShowMessage($"GuestDocument not found with ID: '{docId}'", MessageKind.Error);
Navigation.NotFound();
return;
}
@@ -138,7 +138,7 @@
private void BtnEdit()
{
Snackbar.Add("Not implemented yet!", Severity.Info);
userMessage.ShowMessage("Not implemented yet!", MessageKind.Info);
}
private void BtnReturn()
@@ -5,7 +5,7 @@
@inject IGuestDocumentService GuestDocService
@inject NavigationManager Navigation
@inject ISnackbar Snackbar
@inject IUserMessageService userMessage
@inject IDialogService DialogService
@inject IDataListService dataListService;
@@ -101,7 +101,7 @@
if (showMsg)
{
Snackbar.Add("Data loaded from DB", Severity.Info, o => o.VisibleStateDuration = 1000);
userMessage.ShowMessage("Data loaded from DB", MessageKind.Info);
}
_dataLoading = false;
}
@@ -142,14 +142,15 @@
return;
}
bool deleted = await GuestDocService.DeleteDocumentAsync(item);
if (!deleted)
Result deleteResult = await GuestDocService.DeleteDocumentAsync(item);
if (!deleteResult.IsSuccess)
{
Snackbar.Add($"Error deleting document {item.DocumentType}-{item.DocumentNum}", Severity.Error);
string errorMsg = $"Error deleting document {item.DocumentType}-{item.DocumentNum}";
userMessage.ShowResultWithMessage(deleteResult, errorMsg);
return;
}
Snackbar.Add($"Document {item.DocumentType}-{item.DocumentNum} deleted!", Severity.Success);
userMessage.ShowMessage($"Document {item.DocumentType}-{item.DocumentNum} deleted!", MessageKind.Success);
await LoadDataAsync();
}
@@ -4,7 +4,7 @@
@using Somnia.GuestLog.Services;
@using Somnia.GuestLog.Validators;
@inject ISnackbar Snackbar
@inject IUserMessageService userMessage
@inject IDialogService DialogService
@inject NavigationManager Navigation
@inject IGuestDocumentService guestDocService
@@ -129,26 +129,25 @@
bool isFormValid = await _form.ValidateForm();
if (!isFormValid)
{
Snackbar.Add("Invalid Form!", Severity.Error);
userMessage.ShowMessage("Invalid Form!", MessageKind.Warning);
return;
}
GuestDocumentDTO model = _form.Model;
Snackbar.Add($"Document '{model.DocumentNum}' creating...", Severity.Info);
//Show Loading dialog...
var loadingDialog = await DialogService.ShowAsync<LoadingDialog>();
bool isCreated = await guestDocService.CreateDocumentAsync(model);
if (!isCreated)
Result createResult = await guestDocService.CreateDocumentAsync(model);
if (!createResult.IsSuccess)
{
Snackbar.Add($"Error creating Document '{model.DocumentNum}'", Severity.Error);
string errorMsg = $"Error creating Document '{model.DocumentNum}'";
userMessage.ShowResultWithMessage(createResult, errorMsg);
loadingDialog.Close();
return;
}
Snackbar.Add($"Document '{model.DocumentNum}' Created!", Severity.Success);
userMessage.ShowMessage($"Document '{model.DocumentNum}' Created!", MessageKind.Success);
Navigation.NavigateTo(GuestConsts.Page_GuestDocs_List);
}
@@ -156,7 +155,7 @@
{
if (currentPageMode != ePageMode.alreadyExistDoc)
{
Snackbar.Add("Invalid operation!", Severity.Error);
userMessage.ShowMessage("Invalid operation!", MessageKind.Error);
return;
}