2 Commits

2 changed files with 22 additions and 12 deletions

View File

@@ -9,28 +9,36 @@ namespace DigitalData.Core.DTO
public static class DTOExtensions public static class DTOExtensions
{ {
/// <summary> /// <summary>
/// Adds a single message to the result. /// Adds a single message to the result, if not null.
/// </summary> /// </summary>
/// <typeparam name="T">The type of the result.</typeparam> /// <typeparam name="T">The type of the result.</typeparam>
/// <param name="result">The result to add the message to.</param> /// <param name="result">The result to add the message to.</param>
/// <param name="message">The message to add.</param> /// <param name="message">The message to add.</param>
/// <returns>The updated result.</returns> /// <returns>The updated result.</returns>
public static T Message<T>(this T result, string message) where T : Result public static T Message<T>(this T result, string? message) where T : Result
{ {
result.Messages.Add(message); if(message is not null)
result.Messages.Add(message);
return result; return result;
} }
internal static IEnumerable<T> FilterNull<T>(this IEnumerable<T?> list)
{
foreach (var item in list)
if(item is not null)
yield return item;
}
/// <summary> /// <summary>
/// Adds multiple messages to the result. /// Adds multiple messages to the result, after removing nulls.
/// </summary> /// </summary>
/// <typeparam name="T">The type of the result.</typeparam> /// <typeparam name="T">The type of the result.</typeparam>
/// <param name="result">The result to add the messages to.</param> /// <param name="result">The result to add the messages to.</param>
/// <param name="messages">The messages to add.</param> /// <param name="messages">The messages to add.</param>
/// <returns>The updated result.</returns> /// <returns>The updated result.</returns>
public static T Message<T>(this T result, params string[] messages) where T : Result public static T Message<T>(this T result, params string?[] messages) where T : Result
{ {
result.Messages.AddRange(messages); result.Messages.AddRange(messages.FilterNull());
return result; return result;
} }
@@ -41,9 +49,9 @@ namespace DigitalData.Core.DTO
/// <param name="result">The result to add the messages to.</param> /// <param name="result">The result to add the messages to.</param>
/// <param name="messages">The collection of messages to add.</param> /// <param name="messages">The collection of messages to add.</param>
/// <returns>The updated result.</returns> /// <returns>The updated result.</returns>
public static T Message<T>(this T result, IEnumerable<string> messages) where T : Result public static T Message<T>(this T result, IEnumerable<string?> messages) where T : Result
{ {
result.Messages.AddRange(messages); result.Messages.AddRange(messages.FilterNull());
return result; return result;
} }
@@ -101,13 +109,13 @@ namespace DigitalData.Core.DTO
/// <param name="flag">The flag associated with the notice.</param> /// <param name="flag">The flag associated with the notice.</param>
/// <param name="messages">The messages to add to the notice.</param> /// <param name="messages">The messages to add to the notice.</param>
/// <returns>The updated result.</returns> /// <returns>The updated result.</returns>
public static T Notice<T>(this T result, LogLevel level, Enum flag, params string[] messages) where T : Result public static T Notice<T>(this T result, LogLevel level, Enum flag, params string?[] messages) where T : Result
{ {
result.Notices.Add(new Notice() result.Notices.Add(new Notice()
{ {
Flag = flag, Flag = flag,
Level = level, Level = level,
Messages = messages.ToList() Messages = messages.FilterNull().ToList()
}); });
return result; return result;
} }
@@ -126,7 +134,7 @@ namespace DigitalData.Core.DTO
{ {
Flag = null, Flag = null,
Level = level, Level = level,
Messages = messages.ToList() Messages = messages.FilterNull().ToList()
}); });
return result; return result;
} }

View File

@@ -7,7 +7,7 @@
<Description>This package provides Data Transfer Object (DTO) implementations and related utilities. It includes generic result handling, DTO extension methods, cookie consent settings management, and AutoMapper integration for robust object mapping, all adhering to Clean Architecture principles to ensure separation of concerns and maintainability.</Description> <Description>This package provides Data Transfer Object (DTO) implementations and related utilities. It includes generic result handling, DTO extension methods, cookie consent settings management, and AutoMapper integration for robust object mapping, all adhering to Clean Architecture principles to ensure separation of concerns and maintainability.</Description>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild> <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>DigitalData.Core.DTO</PackageId> <PackageId>DigitalData.Core.DTO</PackageId>
<Version>2.0.0.0</Version> <Version>2.0.1</Version>
<Authors>Digital Data GmbH</Authors> <Authors>Digital Data GmbH</Authors>
<Company>Digital Data GmbH</Company> <Company>Digital Data GmbH</Company>
<Product>DigitalData.Core.DTO</Product> <Product>DigitalData.Core.DTO</Product>
@@ -15,6 +15,8 @@
<PackageIcon>core_icon.png</PackageIcon> <PackageIcon>core_icon.png</PackageIcon>
<RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl> <RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl>
<PackageTags>digital data core dto clean architecture result pattern</PackageTags> <PackageTags>digital data core dto clean architecture result pattern</PackageTags>
<AssemblyVersion>2.0.1</AssemblyVersion>
<FileVersion>2.0.1</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>