Refactor namespaces and enhance application structure
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.
This commit is contained in:
97
DigitalData.Core.Application/DTO/Result.cs
Normal file
97
DigitalData.Core.Application/DTO/Result.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
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.
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user