Funktion: Erweiterung von IServiceMessage mit Methoden zur Nachrichtenverwaltung
- Hinzufügen von Erweiterungsmethoden zu IServiceMessage für das Hinzufügen von Client-, Trace-, Debug-, Informations-, Warn-, Fehler- und kritischen Nachrichten. - Einbeziehung von Methoden für direkte Nachrichten und auf Enum basierende Schlüssel, die Lokalisierung und benutzerdefinierte Formatierung unterstützen.
This commit is contained in:
22
DigitalData.Core.Application/AutoMapperExtension.cs
Normal file
22
DigitalData.Core.Application/AutoMapperExtension.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using AutoMapper;
|
||||
|
||||
namespace DigitalData.Core.Application
|
||||
{
|
||||
public static class AutoMapperExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// Maps a source object to a destination object, or throws an exception if the mapping result is null.
|
||||
/// </summary>
|
||||
/// <typeparam name="TSource">The source object type.</typeparam>
|
||||
/// <typeparam name="TDestination">The destination object type.</typeparam>
|
||||
/// <param name="source">The source object to map from.</param>
|
||||
/// <returns>The mapped destination object.</returns>
|
||||
/// <exception cref="MappingResultNullException">Thrown when the mapping result is null.</exception>
|
||||
public static TDestination MapOrThrow<TDestination>(this IMapper mapper, object source)
|
||||
{
|
||||
return mapper.Map<TDestination>(source) ?? throw new AutoMapperMappingException(
|
||||
$"Mapping to {typeof(TDestination).FullName} resulted in a null object. " +
|
||||
"Hint: Ensure that the AutoMapper profile configuration for this mapping is correct.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,7 +20,6 @@ namespace DigitalData.Core.Application
|
||||
{
|
||||
protected readonly TCRUDRepository _repository;
|
||||
protected readonly IMapper _mapper;
|
||||
protected readonly IKeyTranslationService _translationService;
|
||||
protected readonly PropertyInfo? _keyPropertyInfo;
|
||||
|
||||
/// <summary>
|
||||
@@ -29,10 +28,9 @@ namespace DigitalData.Core.Application
|
||||
/// <param name="repository">The CRUD repository for accessing the database.</param>
|
||||
/// <param name="translationService">The service for translating messages based on culture.</param>
|
||||
/// <param name="mapper">The AutoMapper instance for mapping between DTOs and entity objects.</param>
|
||||
public CRUDService(TCRUDRepository repository, IKeyTranslationService translationService, IMapper mapper)
|
||||
public CRUDService(TCRUDRepository repository, IKeyTranslationService translationService, IMapper mapper) : base(translationService)
|
||||
{
|
||||
_repository = repository;
|
||||
_translationService = translationService;
|
||||
_mapper = mapper;
|
||||
|
||||
_keyPropertyInfo = typeof(TEntity).GetProperties()
|
||||
@@ -96,7 +94,7 @@ namespace DigitalData.Core.Application
|
||||
else
|
||||
{
|
||||
var translatedMessage = _translationService.Translate(MessageKey.UpdateFailed);
|
||||
return Failed(translatedMessage);
|
||||
return Failed();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.DirectoryServices;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System.DirectoryServices.AccountManagement;
|
||||
using DigitalData.Core.Contracts.CultureServices;
|
||||
|
||||
namespace DigitalData.Core.Application
|
||||
{
|
||||
@@ -18,7 +19,7 @@ namespace DigitalData.Core.Application
|
||||
private readonly DateTimeOffset _userCacheExpiration;
|
||||
public Dictionary<string, string> CustomSearchFilters { get; }
|
||||
|
||||
public DirectorySearchService(IConfiguration configuration, ILogger<DirectorySearchService> logger, IMemoryCache memoryCache)
|
||||
public DirectorySearchService(IConfiguration configuration, ILogger<DirectorySearchService> logger, IMemoryCache memoryCache, IKeyTranslationService translationService) : base(translationService)
|
||||
{
|
||||
_memoryCache = memoryCache;
|
||||
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
using DigitalData.Core.Contracts.Application;
|
||||
using DigitalData.Core.Contracts.CultureServices;
|
||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||
|
||||
namespace DigitalData.Core.Application
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides a base implementation of <see cref="IServiceBase"/>, offering basic service messaging and result creation functionalities.
|
||||
/// </summary>
|
||||
public class ResponseService : IResponseService
|
||||
{
|
||||
protected readonly IKeyTranslationService _translationService;
|
||||
|
||||
public ResponseService(IKeyTranslationService translationService)
|
||||
{
|
||||
_translationService = translationService;
|
||||
}
|
||||
|
||||
#region WITHOUT_MESSAGE
|
||||
|
||||
@@ -16,7 +20,11 @@ namespace DigitalData.Core.Application
|
||||
/// </summary>
|
||||
/// <param name="isSuccess">Indicates if the operation was successful.</param>
|
||||
/// <returns>A service message reflecting the operation outcome.</returns>
|
||||
public IServiceMessage CreateMessage(bool isSuccess) => new ServiceMessage(isSuccess);
|
||||
public IServiceMessage CreateMessage(bool isSuccess = false) => new ServiceMessage()
|
||||
{
|
||||
IsSuccess = isSuccess,
|
||||
KeyTranslator = _translationService.Translate
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Creates a service result containing the provided data and a success flag, without additional messages.
|
||||
@@ -25,7 +33,12 @@ namespace DigitalData.Core.Application
|
||||
/// <param name="data">The data to include in the result.</param>
|
||||
/// <param name="isSuccess">Indicates if the operation was successful.</param>
|
||||
/// <returns>A service result with the specified data and outcome.</returns>
|
||||
public IServiceResult<T> CreateResult<T>(T? data, bool isSuccess) => new ServiceResult<T>(data, isSuccess);
|
||||
public IServiceResult<T> CreateResult<T>(T? data = default, bool isSuccess = false) => new ServiceResult<T>()
|
||||
{
|
||||
IsSuccess = isSuccess,
|
||||
Data = data,
|
||||
KeyTranslator = _translationService.Translate
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Creates a service message indicating a successful operation without additional messages.
|
||||
@@ -56,9 +69,8 @@ namespace DigitalData.Core.Application
|
||||
public IServiceResult<T> Failed<T>(T? data = default) => CreateResult(data, false);
|
||||
|
||||
#endregion
|
||||
|
||||
#region WITH_STRING_MESSAGE
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a service message with the specified success flag and messages.
|
||||
/// </summary>
|
||||
@@ -67,6 +79,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A new instance of <see cref="ServiceMessage"/> reflecting the operation outcome.</returns>
|
||||
public virtual IServiceMessage CreateMessage(bool isSuccess, params string[] messages) => new ServiceMessage(isSuccess, messages);
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a service result containing the provided data, success flag, and messages.
|
||||
/// </summary>
|
||||
@@ -77,6 +90,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A new instance of <see cref="ServiceResult{T}"/> with the specified data and outcome.</returns>
|
||||
public virtual IServiceResult<T> CreateResult<T>(T? data = default, bool isSuccess = true, params string[] messages) => new ServiceResult<T>(data, isSuccess, messages);
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a successful service message.
|
||||
/// </summary>
|
||||
@@ -84,6 +98,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A successful service message.</returns>
|
||||
public virtual IServiceMessage Successful(params string[] messages) => CreateMessage(true, messages);
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a failed service message.
|
||||
/// </summary>
|
||||
@@ -91,6 +106,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A failed service message.</returns>
|
||||
public virtual IServiceMessage Failed(params string[] messages) => CreateMessage(false, messages);
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a successful service result with the provided data.
|
||||
/// </summary>
|
||||
@@ -100,6 +116,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A successful service result containing the specified data.</returns>
|
||||
public virtual IServiceResult<T> Successful<T>(T data, params string[] messages) => CreateResult(data, true, messages);
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a failed service result, optionally including data.
|
||||
/// </summary>
|
||||
@@ -109,6 +126,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A failed service result, which may or may not contain the specified data.</returns>
|
||||
public virtual IServiceResult<T> Failed<T>(T? data = default, params string[] messages) => CreateResult(data, false, messages);
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a failed service result using only failure messages, without explicitly including data.
|
||||
/// </summary>
|
||||
@@ -125,6 +143,7 @@ namespace DigitalData.Core.Application
|
||||
#endregion
|
||||
#region WITH_ENUM_MESSAGE
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a service message with the specified success flag and enumeration messages.
|
||||
/// </summary>
|
||||
@@ -133,6 +152,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A new instance of <see cref="ServiceMessage"/> reflecting the operation outcome with enumeration messages.</returns>
|
||||
public IServiceMessage CreateMessage(bool isSuccess, params Enum[] messages) => CreateMessage(isSuccess, messages.Select(m => m.ToString()).ToArray());
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a service result containing the provided data, success flag, and enumeration messages.
|
||||
/// </summary>
|
||||
@@ -143,6 +163,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A new instance of <see cref="ServiceResult{T}"/> with the specified data and outcome using enumeration messages.</returns>
|
||||
public IServiceResult<T> CreateResult<T>(T? data, bool isSuccess, params Enum[] messages) => CreateResult(data, isSuccess, messages.Select(m => m.ToString()).ToArray());
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a successful service message using enumeration messages.
|
||||
/// </summary>
|
||||
@@ -150,6 +171,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A successful service message.</returns>
|
||||
public IServiceMessage Successful(params Enum[] messages) => CreateMessage(true, messages.Select(m => m.ToString()).ToArray());
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a failed service message using enumeration messages.
|
||||
/// </summary>
|
||||
@@ -157,6 +179,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A failed service message.</returns>
|
||||
public IServiceMessage Failed(params Enum[] messages) => CreateMessage(false, messages.Select(m => m.ToString()).ToArray());
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a successful service result with the provided data using enumeration messages.
|
||||
/// </summary>
|
||||
@@ -166,6 +189,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A successful service result containing the specified data.</returns>
|
||||
public IServiceResult<T> Successful<T>(T data, params Enum[] messages) => CreateResult(data, true, messages.Select(m => m.ToString()).ToArray());
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a failed service result, optionally including data, using enumeration messages.
|
||||
/// </summary>
|
||||
@@ -175,6 +199,7 @@ namespace DigitalData.Core.Application
|
||||
/// <returns>A failed service result, which may or may not contain the specified data.</returns>
|
||||
public IServiceResult<T> Failed<T>(T? data = default, params Enum[] messages) => CreateResult(data, false, messages.Select(m => m.ToString()).ToArray());
|
||||
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// <summary>
|
||||
/// Creates a failed service result using only failure messages, without explicitly including data.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,31 +1,16 @@
|
||||
using AutoMapper;
|
||||
using DigitalData.Core.Contracts.Application;
|
||||
using DigitalData.Core.Contracts.CultureServices;
|
||||
|
||||
namespace DigitalData.Core.Application
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides a base implementation of <see cref="IServiceBase"/>, offering basic service messaging and result creation functionalities.
|
||||
/// Provides a base implementation of <see cref="IServiceBase"/>.
|
||||
/// </summary>
|
||||
public class ServiceBase : ResponseService, IServiceBase, IResponseService
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static class AutoMapperExtension
|
||||
{
|
||||
/// <summary>
|
||||
/// Maps a source object to a destination object, or throws an exception if the mapping result is null.
|
||||
/// </summary>
|
||||
/// <typeparam name="TSource">The source object type.</typeparam>
|
||||
/// <typeparam name="TDestination">The destination object type.</typeparam>
|
||||
/// <param name="source">The source object to map from.</param>
|
||||
/// <returns>The mapped destination object.</returns>
|
||||
/// <exception cref="MappingResultNullException">Thrown when the mapping result is null.</exception>
|
||||
public static TDestination MapOrThrow<TDestination>(this IMapper mapper, object source)
|
||||
public ServiceBase(IKeyTranslationService translationService) : base(translationService)
|
||||
{
|
||||
return mapper.Map<TDestination>(source) ?? throw new AutoMapperMappingException(
|
||||
$"Mapping to {typeof(TDestination).FullName} resulted in a null object. " +
|
||||
"Hint: Ensure that the AutoMapper profile configuration for this mapping is correct.");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,40 +1,113 @@
|
||||
using DigitalData.Core.Contracts.Application;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace DigitalData.Core.Application
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents the outcome of a service operation, encapsulating the success or failure status,
|
||||
/// and any associated messages.
|
||||
/// Represents the outcome of a service operation, encapsulating the success or failure status,
|
||||
/// and any associated messages. It also supports optional translation of message keys for localization purposes.
|
||||
/// </summary>
|
||||
public class ServiceMessage : IServiceMessage
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceMessage class.
|
||||
/// </summary>
|
||||
public ServiceMessage()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceMessage class, specifying the success status.
|
||||
/// Optionally, a function for translating message keys can be provided.
|
||||
/// If a translation function is provided, it will be used for both string and enum message keys.
|
||||
/// </summary>
|
||||
/// <param name="isSuccess">Indicates whether the service operation was successful.</param>
|
||||
/// If provided, it will also be adapted for translating enum keys by converting them to strings first.</param>
|
||||
[Obsolete("Deprecated: initialize objects using object initializer.")]
|
||||
public ServiceMessage(bool isSuccess)
|
||||
{
|
||||
IsSuccess = isSuccess;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceMessage class with specified success status, and messages.
|
||||
/// </summary>
|
||||
/// <param name="isSuccess">Indicates whether the service operation was successful.</param>
|
||||
/// <param name="data">The data associated with a successful operation.</param>
|
||||
/// <param name="messages">An array of messages related to the operation's outcome.</param>
|
||||
[Obsolete("Deprecated: initialize objects using object initializer.")]
|
||||
public ServiceMessage(bool isSuccess, params string[] messages)
|
||||
{
|
||||
IsSuccess = isSuccess;
|
||||
Messages = messages.ToList<string>();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether the service operation was successful.
|
||||
/// </summary>
|
||||
public bool IsSuccess { get; set; }
|
||||
public bool IsSuccess { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a collection of messages associated with the service operation.
|
||||
/// [Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
/// Gets a collection of messages associated with the service operation. These messages can be error descriptions,
|
||||
/// success notifications, or other relevant information related to the operation's outcome.
|
||||
/// </summary>
|
||||
public List<string> Messages { get; set; } = new List<string>();
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
public List<string> Messages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of messages intended for client display. This replaces the deprecated 'Messages' property.
|
||||
/// </summary>
|
||||
public List<string> ClientMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of messages used for tracing program execution at a fine-grained level. These are typically voluminous and detailed.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<string> TraceMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of messages helpful for debugging during development. These messages are often diagnostic.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<string> DebugMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of informational messages, less critical than warnings, generally used for non-critical notifications.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<string> InformationMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of messages indicating potential issues that are not necessarily errors, but which may require attention.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<string> WarningMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of error messages indicating failures or problems within the service.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<string> ErrorMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gets a collection of messages indicating critical issues that require immediate attention.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public List<string> CriticalMessages { get; init; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// A function that translates a message key from a string to its localized or transformed representation.
|
||||
/// This property allows for custom translation logic to be applied based on the application's needs.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Func<string, string> KeyTranslator { get; init; } = key => key;
|
||||
|
||||
/// <summary>
|
||||
/// Adds a new message to the collection of messages associated with the service operation.
|
||||
/// </summary>
|
||||
/// <param name="message">The message to add.</param>
|
||||
/// <returns>The current instance of ServiceMessage, allowing for method chaining.</returns>
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
public IServiceMessage WithMessage(string message)
|
||||
{
|
||||
Messages.Add(message);
|
||||
@@ -47,6 +120,7 @@ namespace DigitalData.Core.Application
|
||||
/// </summary>
|
||||
/// <param name="messageKey">The enum value representing the message key.</param>
|
||||
/// <returns>The current instance of ServiceMessage, allowing for method chaining.</returns>
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
public IServiceMessage WithMessageKey(Enum messageKey)
|
||||
{
|
||||
Messages.Add(messageKey.ToString());
|
||||
|
||||
169
DigitalData.Core.Application/ServiceMessageExtensions.cs
Normal file
169
DigitalData.Core.Application/ServiceMessageExtensions.cs
Normal file
@@ -0,0 +1,169 @@
|
||||
using DigitalData.Core.Contracts.Application;
|
||||
|
||||
namespace DigitalData.Core.Application
|
||||
{
|
||||
/// <summary>
|
||||
/// Provides extension methods for IServiceMessage to enhance the usability of service messages
|
||||
/// by allowing easy addition of various types of messages including client, trace, debug, information,
|
||||
/// warning, error, and critical messages. These methods support both direct messages and enum-based keys
|
||||
/// for messages, facilitating localized or custom-formatted messages.
|
||||
/// </summary>
|
||||
public static class ServiceMessageExtensions
|
||||
{
|
||||
#region ClientMessage
|
||||
/// <summary>
|
||||
/// Adds a single client message to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="message">The message to add.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithClientMessage<T>(this T serviceMessage, string message) where T : IServiceMessage
|
||||
{
|
||||
serviceMessage.ClientMessages.Add(message);
|
||||
return serviceMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a client message based on an enumeration key to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="messageKey">The enum key representing the message.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithClientMessageKey<T>(this T serviceMessage, Enum messageKey) where T : IServiceMessage
|
||||
{
|
||||
var message = serviceMessage.KeyTranslator(messageKey.ToString());
|
||||
return serviceMessage.WithClientMessage(message);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TraceMessages
|
||||
/// <summary>
|
||||
/// Adds a trace message to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="message">The trace message to add.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithTraceMessage<T>(this T serviceMessage, string message) where T : IServiceMessage
|
||||
{
|
||||
serviceMessage.TraceMessages.Add(message);
|
||||
return serviceMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a trace message based on an enumeration key to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="messageKey">The enum key representing the trace message.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithTraceMessageKey<T>(this T serviceMessage, Enum messageKey) where T : IServiceMessage
|
||||
{
|
||||
var message = serviceMessage.KeyTranslator(messageKey.ToString());
|
||||
return serviceMessage.WithTraceMessage(message);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region DebugMessages
|
||||
/// <summary>
|
||||
/// Adds a debug message to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="message">The debug message to add.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithDebugMessage<T>(this T serviceMessage, string message) where T : IServiceMessage
|
||||
{
|
||||
serviceMessage.DebugMessages.Add(message);
|
||||
return serviceMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a debug message based on an enumeration key to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="messageKey">The enum key representing the debug message.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithDebugMessageKey<T>(this T serviceMessage, Enum messageKey) where T : IServiceMessage
|
||||
{
|
||||
var message = serviceMessage.KeyTranslator(messageKey.ToString());
|
||||
return serviceMessage.WithDebugMessage(message);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region WarningMessages
|
||||
/// <summary>
|
||||
/// Adds a warning message to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="message">The warning message to add.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithWarningMessage<T>(this T serviceMessage, string message) where T : IServiceMessage
|
||||
{
|
||||
serviceMessage.WarningMessages.Add(message);
|
||||
return serviceMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a warning message based on an enumeration key to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="messageKey">The enum key representing the warning message.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithWarningMessageKey<T>(this T serviceMessage, Enum messageKey) where T : IServiceMessage
|
||||
{
|
||||
var message = serviceMessage.KeyTranslator(messageKey.ToString());
|
||||
return serviceMessage.WithWarningMessage(message);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region ErrorMessages
|
||||
/// <summary>
|
||||
/// Adds an error message to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="message">The error message to add.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithErrorMessage<T>(this T serviceMessage, string message) where T : IServiceMessage
|
||||
{
|
||||
serviceMessage.ErrorMessages.Add(message);
|
||||
return serviceMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds an error message based on an enumeration key to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="messageKey">The enum key representing the error message.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithErrorMessageKey<T>(this T serviceMessage, Enum messageKey) where T : IServiceMessage
|
||||
{
|
||||
var message = serviceMessage.KeyTranslator(messageKey.ToString());
|
||||
return serviceMessage.WithErrorMessage(message);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region CriticalMessages
|
||||
/// <summary>
|
||||
/// Adds a critical message to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="message">The critical message to add.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithCriticalMessage<T>(this T serviceMessage, string message) where T : IServiceMessage
|
||||
{
|
||||
serviceMessage.CriticalMessages.Add(message);
|
||||
return serviceMessage;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds a critical message based on an enumeration key to the service message.
|
||||
/// </summary>
|
||||
/// <param name="serviceMessage">The service message to modify.</param>
|
||||
/// <param name="messageKey">The enum key representing the critical message.</param>
|
||||
/// <returns>The modified service message instance.</returns>
|
||||
public static T WithCriticalMessageKey<T>(this T serviceMessage, Enum messageKey) where T : IServiceMessage
|
||||
{
|
||||
var message = serviceMessage.KeyTranslator(messageKey.ToString());
|
||||
return serviceMessage.WithCriticalMessage(message);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -9,17 +9,47 @@ namespace DigitalData.Core.Application
|
||||
/// <typeparam name="T">The type of data returned by the service operation, if any.</typeparam>
|
||||
public class ServiceResult<T> : ServiceMessage, IServiceResult<T>
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceResult class.
|
||||
public ServiceResult()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceResult class, specifying the success status is false and data.
|
||||
/// Optionally, a function for translating message keys can be provided.
|
||||
/// If a translation function is provided, it will be used for both string and enum message keys.
|
||||
/// </summary>
|
||||
/// <param name="data">The data associated with a successful operation.</param>
|
||||
/// <param name="stringKeyTranslator">A function that translates a string key into its localized representation.
|
||||
/// If provided, it will also be adapted for translating enum keys by converting them to strings first.</param>
|
||||
[Obsolete("Deprecated: initialize objects using object initializers instead.")]
|
||||
public ServiceResult(T? data)
|
||||
{
|
||||
Data = data;
|
||||
IsSuccess = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceResult class with specified success status and data.
|
||||
/// </summary>
|
||||
/// <param name="data">The data associated with a successful operation.</param>
|
||||
/// <param name="isSuccess">Indicates whether the service operation was successful.</param>
|
||||
[Obsolete("Deprecated: initialize objects using object initializers instead.")]
|
||||
public ServiceResult(T? data, bool isSuccess) : base(isSuccess) => Data = data;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the ServiceResult class with specified success status, data, and messages.
|
||||
/// </summary>
|
||||
/// <param name="data">The data associated with a successful operation.</param>
|
||||
/// <param name="isSuccess">Indicates whether the service operation was successful.</param>
|
||||
/// <param name="messages">An array of messages related to the operation's outcome.</param>
|
||||
[Obsolete("Deprecated: Use ClientMessages instead.")]
|
||||
public ServiceResult(T? data, bool isSuccess, params string[] messages) : base(isSuccess, messages) => Data = data;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the data resulting from the service operation.
|
||||
/// </summary>
|
||||
public T? Data { get; set; }
|
||||
public T? Data { get; set; } = default;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
3640b57401dc921b27e40c7f798bc080351d913f
|
||||
1204f54a36145ece1945026f8fb6c0371ee8b734
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user