From 058352b7f3da8bbc60cbdc16ad036868b4a332955db5b3201399c665bb7da39d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= <93217193+Daniel-Garmig@users.noreply.github.com> Date: Fri, 4 Sep 2026 20:50:38 +0200 Subject: [PATCH] feat StayExport - Added common Interface "IResult" for Result so both (generic and non-generic one) can be used easier. --- .../Pages/StayExport/StayExportList.razor | 1 + .../Pages/StayExport/StayExportNew.razor | 17 ++++++++-------- src/Somnia.GuestLog/Models/DTOs/Result.cs | 20 +++++++++++++++++-- .../Services/IUserMessageService.cs | 6 +++--- .../Services/UserMessageService.cs | 5 +++-- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportList.razor b/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportList.razor index 97ca1aa..f1b1621 100644 --- a/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportList.razor +++ b/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportList.razor @@ -148,6 +148,7 @@ var fileName = Path.GetFileName(item.ExportedPath); await JS.InvokeVoidAsync("downloadFileFromStream", fileName, streamRef); + userMessage.ShowMessage("Exported File downloaded!", MessageKind.Success); } private async Task BtnDeleteItem(StayExportFileDTO item) diff --git a/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportNew.razor b/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportNew.razor index 6d1ee8c..d4f7640 100644 --- a/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportNew.razor +++ b/src/Somnia.GuestLog/Components/Pages/StayExport/StayExportNew.razor @@ -125,18 +125,17 @@ var exportResult = await exportService.ExportStaysByParams(exportParams); exportedFile = exportResult.Value; - userMessage.ShowMessage( - $"Stay exported: {exportResult.ResultCode} with export result: {exportedFile?.ExportResult} to '{exportedFile?.ExportedPath ?? "???"}'", - MessageKind.Info); - loadingDialog.Close(); - @* Result createResult = await stayService.CreateEntryAsync(model); - if (!createResult.IsSuccess) + if (!exportResult.IsSuccess) { - userMessage.ShowResultWithMessage(createResult, $"Error creating StayEntry"); + userMessage.ShowResultWithMessage(exportResult, $"Error exporting stays"); return; - } *@ + } + + userMessage.ShowMessage( + $"Stay exported: {exportResult.ResultCode} with export result: {exportedFile?.ExportResult}", + MessageKind.Success); } private async Task BtnDownloadExportedFile() @@ -161,6 +160,8 @@ using var streamRef = new DotNetStreamReference(stream: objectStream); await JS.InvokeVoidAsync("downloadFileFromStream", fileName, streamRef); + + userMessage.ShowMessage("Exported File downloaded!", MessageKind.Success); } } \ No newline at end of file diff --git a/src/Somnia.GuestLog/Models/DTOs/Result.cs b/src/Somnia.GuestLog/Models/DTOs/Result.cs index b877f94..bcbc1ec 100644 --- a/src/Somnia.GuestLog/Models/DTOs/Result.cs +++ b/src/Somnia.GuestLog/Models/DTOs/Result.cs @@ -2,7 +2,18 @@ using Somnia.GuestLog.Enums.Services; namespace Somnia.GuestLog.Models.DTOs; -public sealed record Result(bool IsSuccess, ResultCode ResultCode, params object[]? Context) +public interface IResult +{ + bool IsSuccess { get; } + ResultCode ResultCode { get; } + object[]? Context { get; } +} + +public sealed record Result( + bool IsSuccess, + ResultCode ResultCode, + params object[]? Context +) : IResult { public static Result Ok() => new(IsSuccess: true, ResultCode: ResultCode.Ok, Context: null); @@ -15,7 +26,12 @@ public sealed record Result(bool IsSuccess, ResultCode ResultCode, params object public bool IsUnknownError => !IsSuccess && ResultCode == ResultCode.UnknownError; } -public sealed record Result(bool IsSuccess, T? Value, ResultCode ResultCode, params object[]? Context) +public sealed record Result( + bool IsSuccess, + T? Value, + ResultCode ResultCode, + params object[]? Context +) : IResult { public static Result Ok(T value) => new(IsSuccess: true, value, ResultCode: ResultCode.Ok, Context: null); public static Result Fail(ResultCode resultCode) => new(IsSuccess: false, Value: default, resultCode, Context: null); diff --git a/src/Somnia.GuestLog/Services/IUserMessageService.cs b/src/Somnia.GuestLog/Services/IUserMessageService.cs index c116a55..bc886c4 100644 --- a/src/Somnia.GuestLog/Services/IUserMessageService.cs +++ b/src/Somnia.GuestLog/Services/IUserMessageService.cs @@ -1,5 +1,5 @@ using Somnia.GuestLog.Enums.UI; -using Somnia.GuestLog.Models.DTOs; +using IResult = Somnia.GuestLog.Models.DTOs.IResult; namespace Somnia.GuestLog.Services; @@ -7,6 +7,6 @@ public interface IUserMessageService { public void ShowMessage(string text, MessageKind kind, params object[] parameters); - public void ShowResult(Result resultDto); - public void ShowResultWithMessage(Result resultDto, string message); + public void ShowResult(IResult resultDto); + public void ShowResultWithMessage(IResult resultDto, string message); } \ No newline at end of file diff --git a/src/Somnia.GuestLog/Services/UserMessageService.cs b/src/Somnia.GuestLog/Services/UserMessageService.cs index f995687..f68602d 100644 --- a/src/Somnia.GuestLog/Services/UserMessageService.cs +++ b/src/Somnia.GuestLog/Services/UserMessageService.cs @@ -2,6 +2,7 @@ using MudBlazor; using Somnia.GuestLog.Enums.Services; using Somnia.GuestLog.Enums.UI; using Somnia.GuestLog.Models.DTOs; +using IResult = Somnia.GuestLog.Models.DTOs.IResult; namespace Somnia.GuestLog.Services; @@ -17,12 +18,12 @@ public class UserMessageService( } - public void ShowResult(Result resultDto) + public void ShowResult(IResult resultDto) { ShowResultWithMessage(resultDto, message: null); } - public void ShowResultWithMessage(Result resultDto, string? message) + public void ShowResultWithMessage(IResult resultDto, string? message) { string resultMsg = GetMsgForResultCode(resultDto.ResultCode); resultMsg = GetFormatedMessage(resultMsg, resultDto.Context);