From cf31cbc414b344718264d6283c24b7f9140d4331859aaca5a73c39e9995466ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa?= <93217193+Daniel-Garmig@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:15:10 +0200 Subject: [PATCH] feat StayExport - Added LocalizerService - Added new "LocalizerService" to get localization for enum values (and other dynamic/db values in the future). --- src/Somnia.GuestLog/GuestConsts.cs | 3 ++ src/Somnia.GuestLog/Program.cs | 2 +- .../Resources/LanguageLocale.resx | 12 +++--- .../Services/ILocalizerService.cs | 7 ++++ .../Services/LocalizerService.cs | 37 +++++++++++++++++++ .../Services/UserMessageService.cs | 15 +------- 6 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 src/Somnia.GuestLog/Services/ILocalizerService.cs create mode 100644 src/Somnia.GuestLog/Services/LocalizerService.cs diff --git a/src/Somnia.GuestLog/GuestConsts.cs b/src/Somnia.GuestLog/GuestConsts.cs index a868187..af7a4e2 100644 --- a/src/Somnia.GuestLog/GuestConsts.cs +++ b/src/Somnia.GuestLog/GuestConsts.cs @@ -30,4 +30,7 @@ public static class GuestConsts public const string DocumentType_PASSPORT = "PASSPORT"; public const int GuestDocument_FirstVersion = 1; + + + public const string EmptyField = "-"; } \ No newline at end of file diff --git a/src/Somnia.GuestLog/Program.cs b/src/Somnia.GuestLog/Program.cs index 6ef7ff6..da4d9b1 100644 --- a/src/Somnia.GuestLog/Program.cs +++ b/src/Somnia.GuestLog/Program.cs @@ -63,8 +63,8 @@ builder.Services.AddSingleton(); - builder.Services.AddScoped(); +builder.Services.AddSingleton(); // Add Factories (and it's services) builder.Services.AddFactoryDI(); diff --git a/src/Somnia.GuestLog/Resources/LanguageLocale.resx b/src/Somnia.GuestLog/Resources/LanguageLocale.resx index 378e084..818e6c5 100644 --- a/src/Somnia.GuestLog/Resources/LanguageLocale.resx +++ b/src/Somnia.GuestLog/Resources/LanguageLocale.resx @@ -180,13 +180,13 @@ - OK - Unknown Error - Failed entity validation - Not found + OK + Unknown Error + Failed entity validation + Not found - Guest (ID: '{0}') is in a stay. - Guest (ID: '{0}') is already in one stay during the period: {1} + Guest (ID: '{0}') is in a stay. + Guest (ID: '{0}') is already in one stay during the period: {1} Guests diff --git a/src/Somnia.GuestLog/Services/ILocalizerService.cs b/src/Somnia.GuestLog/Services/ILocalizerService.cs new file mode 100644 index 0000000..22ef672 --- /dev/null +++ b/src/Somnia.GuestLog/Services/ILocalizerService.cs @@ -0,0 +1,7 @@ +namespace Somnia.GuestLog.Services; + +public interface ILocalizerService +{ + public string GetEnumValue(TEnum? enumValue) where TEnum : struct, Enum; + public string GetEnumValue(TEnum enumValue) where TEnum : struct, Enum; +} \ No newline at end of file diff --git a/src/Somnia.GuestLog/Services/LocalizerService.cs b/src/Somnia.GuestLog/Services/LocalizerService.cs new file mode 100644 index 0000000..19b4f5f --- /dev/null +++ b/src/Somnia.GuestLog/Services/LocalizerService.cs @@ -0,0 +1,37 @@ +using Microsoft.Extensions.Localization; +using Somnia.GuestLog.Resources; + +namespace Somnia.GuestLog.Services; + +public class LocalizerService( + IServiceProvider serviceProvider +) : ILocalizerService +{ + private IStringLocalizer Localizer + { + get + { + field ??= serviceProvider.GetRequiredService>(); + return field; + } + } + + public string GetEnumValue(TEnum? enumValue) where TEnum : struct, Enum + { + if (enumValue == null) + { + return GuestConsts.EmptyField; + } + + return GetEnumValue(enumValue.Value); + } + + public string GetEnumValue(TEnum enumValue) where TEnum : struct, Enum + { + string enumName = typeof(TEnum).Name; + string? strEnumValue = Enum.GetName(enumValue); + string localeKey = $"enum.{enumName}.{strEnumValue}"; + + return Localizer[localeKey]; + } +} \ No newline at end of file diff --git a/src/Somnia.GuestLog/Services/UserMessageService.cs b/src/Somnia.GuestLog/Services/UserMessageService.cs index 2a589dd..f995687 100644 --- a/src/Somnia.GuestLog/Services/UserMessageService.cs +++ b/src/Somnia.GuestLog/Services/UserMessageService.cs @@ -1,26 +1,15 @@ -using Microsoft.Extensions.Localization; using MudBlazor; using Somnia.GuestLog.Enums.Services; using Somnia.GuestLog.Enums.UI; using Somnia.GuestLog.Models.DTOs; -using Somnia.GuestLog.Resources; namespace Somnia.GuestLog.Services; public class UserMessageService( - IServiceProvider serviceProvider, + ILocalizerService Localizer, ISnackbar snackbar ) : IUserMessageService { - private IStringLocalizer _localizer - { - get - { - return serviceProvider.GetRequiredService>(); - } - } - - public void ShowMessage(string text, MessageKind kind, params object[] parameters) { string formatedMsg = GetFormatedMessage(text, parameters); @@ -61,7 +50,7 @@ public class UserMessageService( private string GetMsgForResultCode(ResultCode resultCode) { - return _localizer[$"resultCode.{Enum.GetName(resultCode)}"]; + return Localizer.GetEnumValue(resultCode); } private static string GetFormatedMessage(string template, params object[]? parameters)