From 7fefc680614521729bba5777800e8e52858cb5ee Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 8 May 2025 12:00:48 +0200 Subject: [PATCH] Refactor enum handling in MemoryCache and HistoryController Updated `GetEnumAsDictionary` in `MemoryCacheExtensions.cs` to use a loop for populating a dictionary of enum values, removing LINQ for simplicity. Modified `HistoryController.cs` to adjust method signatures for `GetReferenceTypes` and `GetEnvelopeStatus`, allowing optional parameters for better conditional responses. Added necessary using directives. --- .../MemoryCacheExtensions.cs | 17 +++++++------ .../Controllers/HistoryController.cs | 24 +++++++------------ 2 files changed, 16 insertions(+), 25 deletions(-) diff --git a/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs b/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs index 21b60956..31df714d 100644 --- a/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs +++ b/EnvelopeGenerator.Extensions/MemoryCacheExtensions.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.Caching.Memory; +using System; namespace EnvelopeGenerator.Extensions; @@ -7,15 +8,13 @@ public static class MemoryCacheExtensions public static IDictionary GetEnumAsDictionary(this IMemoryCache memoryCache) where TEnum : Enum { - var referenceTypes = Enum.GetValues(typeof(TEnum)) - .Cast() - .ToDictionary(rt => - { - var key = rt.ToString(); - var keyAsCamelCase = char.ToLowerInvariant(key[0]) + key[1..]; - return keyAsCamelCase; - }, rt => Convert.ToInt32(rt)); + var dict = new Dictionary(); - return referenceTypes; + foreach (TEnum role in Enum.GetValues(typeof(TEnum))) + { + dict[role.ToString()] = Convert.ToInt32(role); + } + + return dict; } } diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs index 236ffee5..2adbd4e0 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/HistoryController.cs @@ -1,9 +1,11 @@ -using EnvelopeGenerator.Application.Contracts.Services; +using DigitalData.EmailProfilerDispatcher.Abstraction.Entities; +using EnvelopeGenerator.Application.Contracts.Services; using EnvelopeGenerator.Application.Histories.Queries.Read; using EnvelopeGenerator.Extensions; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; +using Microsoft.IdentityModel.Tokens; using static EnvelopeGenerator.Common.Constants; @@ -51,9 +53,9 @@ public class HistoryController : ControllerBase /// [HttpGet("related")] [Authorize] - public IActionResult GetReferenceTypes() + public IActionResult GetReferenceTypes(ReferenceType? referenceType = null) { - return Ok(_memoryCache.GetEnumAsDictionary()); + return referenceType is null ? Ok(_memoryCache.GetEnumAsDictionary()) : Ok(referenceType.ToString()); } /// @@ -85,7 +87,7 @@ public class HistoryController : ControllerBase /// 3004: MessageDeletionSent /// 3005: MessageCompletionSent /// - /// + /// /// Abfrageparameter, der angibt, auf welche Referenz sich der Status bezieht. /// 0 - Sender: Historische Datensätze, die sich auf den Status des Absenders beziehen. Sie haben Statuscodes, die mit 1* beginnen. /// 1 - Receiver: Historische Datensätze über den Status der Empfänger. Diese haben Statuscodes, die mit 2* beginnen. @@ -96,19 +98,9 @@ public class HistoryController : ControllerBase /// [HttpGet("status")] [Authorize] - public IActionResult GetEnvelopeStatus([FromQuery] ReferenceType? related = null) + public IActionResult GetEnvelopeStatus([FromQuery] EnvelopeStatus? status = null) { - // Enum zu Schlüssel-Wert-Paar - var referenceTypes = Enum.GetValues(typeof(ReferenceType)) - .Cast() - .ToDictionary(rt => - { - var key = rt.ToString(); - var keyAsCamelCase = char.ToLower(key[0]) + key[1..]; - return keyAsCamelCase; - }, rt => (int)rt); - - return Ok(referenceTypes); + return status is null ? Ok(_memoryCache.GetEnumAsDictionary()) : Ok(status.ToString()); } ///