From 4f22cd45417f012836d46e02f2798a793054b22c3f86da35d829325646b40317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= <93217193+Daniel-Garmig@users.noreply.github.com> Date: Tue, 25 Aug 2026 15:18:02 +0200 Subject: [PATCH] GuestLog - Moved Enums - Enums moved to Enum folder (by type). - ResultCode class changed to enum to ensure type safety in results. --- src/Somnia.GuestLog/Components/_Imports.razor | 2 +- .../Enums/Services/AddressQueryProvider.cs | 7 ++++++ .../Enums/Services/ResultCode.cs | 10 ++++++++ .../Forms => Enums/UI}/FormMode.cs | 2 +- src/Somnia.GuestLog/Enums/UI/MessageKind.cs | 6 +++++ .../Configuration/AddressQueryConfig.cs | 12 +++------- src/Somnia.GuestLog/Models/DTOs/Result.cs | 24 ++++++++++--------- src/Somnia.GuestLog/Models/ResultCode.cs | 11 --------- .../ConfigFileAddressQueryFactory.cs | 5 ++-- .../Services/GuestDocumentService.cs | 1 + .../Services/IUserMessageService.cs | 7 +----- .../Services/StayEntryService.cs | 1 + .../Services/UserMessageService.cs | 8 +++---- 13 files changed, 51 insertions(+), 45 deletions(-) create mode 100644 src/Somnia.GuestLog/Enums/Services/AddressQueryProvider.cs create mode 100644 src/Somnia.GuestLog/Enums/Services/ResultCode.cs rename src/Somnia.GuestLog/{Components/Forms => Enums/UI}/FormMode.cs (54%) create mode 100644 src/Somnia.GuestLog/Enums/UI/MessageKind.cs delete mode 100644 src/Somnia.GuestLog/Models/ResultCode.cs diff --git a/src/Somnia.GuestLog/Components/_Imports.razor b/src/Somnia.GuestLog/Components/_Imports.razor index 57f2108..36d96bc 100644 --- a/src/Somnia.GuestLog/Components/_Imports.razor +++ b/src/Somnia.GuestLog/Components/_Imports.razor @@ -16,4 +16,4 @@ @using Somnia.GuestLog.Components.Forms @using Somnia.GuestLog.Components.Controls @using Somnia.GuestLog.Resources -@using MessageKind = Somnia.GuestLog.Services.IUserMessageService.MessageKind; \ No newline at end of file +@using Somnia.GuestLog.Enums.UI \ No newline at end of file diff --git a/src/Somnia.GuestLog/Enums/Services/AddressQueryProvider.cs b/src/Somnia.GuestLog/Enums/Services/AddressQueryProvider.cs new file mode 100644 index 0000000..aaf443a --- /dev/null +++ b/src/Somnia.GuestLog/Enums/Services/AddressQueryProvider.cs @@ -0,0 +1,7 @@ +namespace Somnia.GuestLog.Enums.Services; + +public enum AddressQueryProvider +{ + Nominatim, + GoogleApiV4 +} \ No newline at end of file diff --git a/src/Somnia.GuestLog/Enums/Services/ResultCode.cs b/src/Somnia.GuestLog/Enums/Services/ResultCode.cs new file mode 100644 index 0000000..e886421 --- /dev/null +++ b/src/Somnia.GuestLog/Enums/Services/ResultCode.cs @@ -0,0 +1,10 @@ +namespace Somnia.GuestLog.Enums.Services; + +public enum ResultCode +{ + Ok, + UnknownError, + FailedValidation, + NotFound, + GuestCurrentlyInStay, +} \ No newline at end of file diff --git a/src/Somnia.GuestLog/Components/Forms/FormMode.cs b/src/Somnia.GuestLog/Enums/UI/FormMode.cs similarity index 54% rename from src/Somnia.GuestLog/Components/Forms/FormMode.cs rename to src/Somnia.GuestLog/Enums/UI/FormMode.cs index 42e9d6c..6e97152 100644 --- a/src/Somnia.GuestLog/Components/Forms/FormMode.cs +++ b/src/Somnia.GuestLog/Enums/UI/FormMode.cs @@ -1,4 +1,4 @@ -namespace Somnia.GuestLog.Components.Forms; +namespace Somnia.GuestLog.Enums.UI; public enum FormMode { diff --git a/src/Somnia.GuestLog/Enums/UI/MessageKind.cs b/src/Somnia.GuestLog/Enums/UI/MessageKind.cs new file mode 100644 index 0000000..cfc3fc1 --- /dev/null +++ b/src/Somnia.GuestLog/Enums/UI/MessageKind.cs @@ -0,0 +1,6 @@ +namespace Somnia.GuestLog.Enums.UI; + +public enum MessageKind +{ + Info, Warning, Error, Success, Normal +} \ No newline at end of file diff --git a/src/Somnia.GuestLog/Models/Configuration/AddressQueryConfig.cs b/src/Somnia.GuestLog/Models/Configuration/AddressQueryConfig.cs index b5d63f1..d0dd3b3 100644 --- a/src/Somnia.GuestLog/Models/Configuration/AddressQueryConfig.cs +++ b/src/Somnia.GuestLog/Models/Configuration/AddressQueryConfig.cs @@ -1,3 +1,5 @@ +using Somnia.GuestLog.Enums.Services; + namespace Somnia.GuestLog.Models.Configuration; public class AddressQueryConfig @@ -5,18 +7,10 @@ public class AddressQueryConfig public const string SectionName = "AddressQuery"; public bool EnableAddressQuery { get; set; } - public AddressQueryProviderEnum? Provider { get; set; } + public AddressQueryProvider? Provider { get; set; } public string? ServiceURL { get; set; } public string? ApiKey { get; set; } public string? UserAgent { get; set; } public string? ResultLang { get; set; } - - - public enum AddressQueryProviderEnum - { - Nominatim, - GoogleApiV4 - } - } diff --git a/src/Somnia.GuestLog/Models/DTOs/Result.cs b/src/Somnia.GuestLog/Models/DTOs/Result.cs index 20451b9..b877f94 100644 --- a/src/Somnia.GuestLog/Models/DTOs/Result.cs +++ b/src/Somnia.GuestLog/Models/DTOs/Result.cs @@ -1,24 +1,26 @@ +using Somnia.GuestLog.Enums.Services; + namespace Somnia.GuestLog.Models.DTOs; -public sealed record Result(bool IsSuccess, string ResultCode, params object[]? Context) +public sealed record Result(bool IsSuccess, ResultCode ResultCode, params object[]? Context) { - public static Result Ok() => new(IsSuccess: true, ResultCode: Models.ResultCode.Ok, Context: null); + public static Result Ok() => new(IsSuccess: true, ResultCode: ResultCode.Ok, Context: null); - public static Result Fail(string resultCode) => new(IsSuccess: false, resultCode, Context: null); - public static Result FailWithContext(string resultCode, params object[] context) + public static Result Fail(ResultCode resultCode) => new(IsSuccess: false, resultCode, Context: null); + public static Result FailWithContext(ResultCode resultCode, params object[] context) => new(IsSuccess: false, resultCode, context); public static Result FailUnknownError() - => new(IsSuccess: false, ResultCode: Models.ResultCode.UnknownError, Context: null); + => new(IsSuccess: false, ResultCode: ResultCode.UnknownError, Context: null); - public bool IsUnknownError => !IsSuccess && ResultCode == Models.ResultCode.UnknownError; + public bool IsUnknownError => !IsSuccess && ResultCode == ResultCode.UnknownError; } -public sealed record Result(bool IsSuccess, T? Value, string ResultCode, params object[]? Context) +public sealed record Result(bool IsSuccess, T? Value, ResultCode ResultCode, params object[]? Context) { - public static Result Ok(T value) => new(IsSuccess: true, value, ResultCode: Models.ResultCode.Ok, Context: null); - public static Result Fail(string resultCode) => new(IsSuccess: false, Value: default, resultCode, Context: null); - public static Result FailWithContext(string resultCode, params object[] context) + 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); + public static Result FailWithContext(ResultCode resultCode, params object[] context) => new(IsSuccess: false, Value: default, resultCode, context); - public bool IsUnknownError => !IsSuccess && ResultCode == Models.ResultCode.UnknownError; + public bool IsUnknownError => !IsSuccess && ResultCode == ResultCode.UnknownError; } \ No newline at end of file diff --git a/src/Somnia.GuestLog/Models/ResultCode.cs b/src/Somnia.GuestLog/Models/ResultCode.cs deleted file mode 100644 index ea54801..0000000 --- a/src/Somnia.GuestLog/Models/ResultCode.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Somnia.GuestLog.Models; - -public static class ResultCode -{ - public const string Ok = "Ok"; - public const string UnknownError = "UnknownError"; - public const string FailedValidation = "FailedValidation"; - public const string NotFound = "NotFound"; - - public const string GuestCurrentlyInStay = "GuestCurrentlyInStay"; -} \ No newline at end of file diff --git a/src/Somnia.GuestLog/Services/AddressQuery/ConfigFileAddressQueryFactory.cs b/src/Somnia.GuestLog/Services/AddressQuery/ConfigFileAddressQueryFactory.cs index 0852f80..65a3f75 100644 --- a/src/Somnia.GuestLog/Services/AddressQuery/ConfigFileAddressQueryFactory.cs +++ b/src/Somnia.GuestLog/Services/AddressQuery/ConfigFileAddressQueryFactory.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.Options; +using Somnia.GuestLog.Enums.Services; using Somnia.GuestLog.Models.Configuration; using Somnia.GuestLog.Utils.DI; @@ -11,8 +12,8 @@ public class ConfigFileAddressQueryFactory( { public static void RegisterFactoryItems(IServiceCollection services) { - services.AddKeyedTransient(AddressQueryConfig.AddressQueryProviderEnum.Nominatim); - services.AddKeyedTransient(AddressQueryConfig.AddressQueryProviderEnum.GoogleApiV4); + services.AddKeyedTransient(AddressQueryProvider.Nominatim); + services.AddKeyedTransient(AddressQueryProvider.GoogleApiV4); } public IAddressQueryService GetService() diff --git a/src/Somnia.GuestLog/Services/GuestDocumentService.cs b/src/Somnia.GuestLog/Services/GuestDocumentService.cs index b2408c3..6b284ea 100644 --- a/src/Somnia.GuestLog/Services/GuestDocumentService.cs +++ b/src/Somnia.GuestLog/Services/GuestDocumentService.cs @@ -1,5 +1,6 @@ using FluentValidation; using Microsoft.EntityFrameworkCore; +using Somnia.GuestLog.Enums.Services; using Somnia.GuestLog.Infrastructure; using Somnia.GuestLog.Models; using Somnia.GuestLog.Models.DTOs; diff --git a/src/Somnia.GuestLog/Services/IUserMessageService.cs b/src/Somnia.GuestLog/Services/IUserMessageService.cs index 5a5b9b4..c116a55 100644 --- a/src/Somnia.GuestLog/Services/IUserMessageService.cs +++ b/src/Somnia.GuestLog/Services/IUserMessageService.cs @@ -1,3 +1,4 @@ +using Somnia.GuestLog.Enums.UI; using Somnia.GuestLog.Models.DTOs; namespace Somnia.GuestLog.Services; @@ -8,10 +9,4 @@ public interface IUserMessageService public void ShowResult(Result resultDto); public void ShowResultWithMessage(Result resultDto, string message); - - - public enum MessageKind - { - Info, Warning, Error, Success, Normal - } } \ No newline at end of file diff --git a/src/Somnia.GuestLog/Services/StayEntryService.cs b/src/Somnia.GuestLog/Services/StayEntryService.cs index d6c5901..369c510 100644 --- a/src/Somnia.GuestLog/Services/StayEntryService.cs +++ b/src/Somnia.GuestLog/Services/StayEntryService.cs @@ -1,5 +1,6 @@ using FluentValidation; using Microsoft.EntityFrameworkCore; +using Somnia.GuestLog.Enums.Services; using Somnia.GuestLog.Infrastructure; using Somnia.GuestLog.Models; using Somnia.GuestLog.Models.DTOs; diff --git a/src/Somnia.GuestLog/Services/UserMessageService.cs b/src/Somnia.GuestLog/Services/UserMessageService.cs index 22d8ede..2a589dd 100644 --- a/src/Somnia.GuestLog/Services/UserMessageService.cs +++ b/src/Somnia.GuestLog/Services/UserMessageService.cs @@ -1,9 +1,9 @@ using Microsoft.Extensions.Localization; using MudBlazor; -using Somnia.GuestLog.Models; +using Somnia.GuestLog.Enums.Services; +using Somnia.GuestLog.Enums.UI; using Somnia.GuestLog.Models.DTOs; using Somnia.GuestLog.Resources; -using MessageKind = Somnia.GuestLog.Services.IUserMessageService.MessageKind; namespace Somnia.GuestLog.Services; @@ -59,9 +59,9 @@ public class UserMessageService( snackbar.Add(message: msg, severity: GetSnackbarSeveryForMessageKind(kind)); } - private string GetMsgForResultCode(string resultCode) + private string GetMsgForResultCode(ResultCode resultCode) { - return _localizer[$"resultCode.{resultCode}"]; + return _localizer[$"resultCode.{Enum.GetName(resultCode)}"]; } private static string GetFormatedMessage(string template, params object[]? parameters)