This commit reorganizes namespaces from `DigitalData.Core.Abstractions` and `DigitalData.Core.DTO` to `DigitalData.Core.Application.Interfaces` and `DigitalData.Core.Application.DTO`, improving maintainability and clarity. Updated using directives across multiple files to reflect the new structure, ensuring functionality remains intact. Project references in `DigitalData.Core.API.csproj` have been consolidated to include the new Application project. Introduced new classes and interfaces such as `BaseDTO`, `CookieConsentSettings`, `DataResult`, `Notice`, and `Result` to enhance data transfer and service result handling. Updated `IRepository`, `ICRUDRepository`, and `IEntityMapper` interfaces to facilitate CRUD operations and entity mapping. Added extension methods in `Extensions.cs` to improve repository usability. New interfaces for HTTP client services have been added, enhancing external API call handling. Overall, these changes reflect a significant restructuring aimed at improving organization and preparing for future development.
97 lines
3.7 KiB
C#
97 lines
3.7 KiB
C#
using System.Text.Json.Serialization;
|
|
|
|
namespace DigitalData.Core.Application.DTO
|
|
{
|
|
/// <summary>
|
|
/// Represents the result of an operation, containing information about its success or failure,
|
|
/// messages for the client, and notices for logging.
|
|
/// </summary>
|
|
public class Result
|
|
{
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether the operation was successful.
|
|
/// </summary>
|
|
public bool IsSuccess { get; set; } = false;
|
|
|
|
/// <summary>
|
|
/// Gets a value indicating whether the operation failed.
|
|
/// </summary>
|
|
public bool IsFailed => !IsSuccess;
|
|
|
|
/// <summary>
|
|
/// Gets a list of messages intended for the client.
|
|
/// </summary>
|
|
public List<string> Messages { get; init; } = new();
|
|
|
|
/// <summary>
|
|
/// Gets a list of notices intended for logging purposes. This property is ignored during JSON serialization.
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
public List<Notice> Notices = new();
|
|
|
|
/// <summary>
|
|
/// Creates a <see cref="DataResult{T}"/> with the specified data.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of the data.</typeparam>
|
|
/// <param name="data">The data to include in the result.</param>
|
|
/// <returns>A new <see cref="DataResult{T}"/> instance.</returns>
|
|
public DataResult<T> Data<T>(T data) => new()
|
|
{
|
|
IsSuccess = IsSuccess,
|
|
Messages = Messages,
|
|
Notices = Notices,
|
|
Data = data
|
|
};
|
|
|
|
/// <summary>
|
|
/// Checks if any notice has the specified flag.
|
|
/// </summary>
|
|
/// <param name="flag">The flag to check.</param>
|
|
/// <returns>True if any notice has the specified flag; otherwise, false.</returns>
|
|
public bool HasFlag(Enum flag) => Notices.Any(n => n.Flag?.ToString() == flag.ToString());
|
|
|
|
/// <summary>
|
|
/// Checks if any notice has any of the specified flags.
|
|
/// </summary>
|
|
/// <param name="flags">The flags to check.</param>
|
|
/// <returns>True if any notice has any of the specified flags; otherwise, false.</returns>
|
|
public bool HasAnyFlag(params Enum[] flags) => flags.Any(HasFlag);
|
|
|
|
/// <summary>
|
|
/// Creates a new successful <see cref="Result"/>.
|
|
/// </summary>
|
|
/// <returns>A new successful <see cref="Result"/>.</returns>
|
|
public static Result Success() => new() { IsSuccess = true };
|
|
|
|
/// <summary>
|
|
/// Creates a new failed <see cref="Result"/>.
|
|
/// </summary>
|
|
/// <returns>A new failed <see cref="Result"/>.</returns>
|
|
public static Result Fail() => new() { IsSuccess = false };
|
|
|
|
/// <summary>
|
|
/// Creates a new successful <see cref="DataResult{T}"/> with the specified data.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of the data.</typeparam>
|
|
/// <param name="data">The data to include in the result.</param>
|
|
/// <returns>A new successful <see cref="DataResult{T}"/> with the specified data.</returns>
|
|
public static DataResult<T> Success<T>(T data) => new()
|
|
{
|
|
IsSuccess = true,
|
|
Data = data
|
|
};
|
|
|
|
/// <summary>
|
|
/// Creates a new failed <see cref="DataResult{T}"/> with no data.
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of the data.</typeparam>
|
|
/// <returns>A new failed <see cref="DataResult{T}"/> with no data.</returns>
|
|
#pragma warning disable CS8601 // Possible null reference assignment.
|
|
public static DataResult<T> Fail<T>() => new()
|
|
{
|
|
IsSuccess = false,
|
|
Data = default
|
|
};
|
|
#pragma warning restore CS8601 // Possible null reference assignment.
|
|
}
|
|
} |