Compare commits

...

7 Commits

Author SHA1 Message Date
10e751b9a1 refactor(dto): Umbenennung von CommonRequest in HttpRequestBase zur besseren Übersichtlichkeit
Ersetzte `CommonRequest` durch `HttpRequestBase`, um den Zweck besser wiederzugeben.
Außerdem wurde `Request` in `HttpRequest` und `Request<TResponse>` in `HttpRequest<TResponse>` umbenannt.
2025-07-09 09:56:56 +02:00
1972b8d6c9 Add synchronous version of UpdateArticleAsync with XML documentation 2025-07-09 09:48:18 +02:00
821edc8718 Add synchronous version of CreateArticleAsync with XML documentation 2025-07-09 09:46:02 +02:00
71f7039376 Add synchronous versions of article retrieval methods with XML documentation and regions 2025-07-09 09:37:51 +02:00
7d5c00f0cb refactor: Hinzufügen der synchronen Version der Methode IsAliveAsync mit XML-Dokumentation 2025-07-09 09:29:10 +02:00
f18840267d refactor(extensions): getrennt nach http-Methoden.
- Kommentare zur Dokumentation hinzugefügt.
2025-07-09 09:25:45 +02:00
7d575398c6 refactor(extensions): getrennt nach http-Methoden.
- Kommentare zur Dokumentation hinzugefügt.
2025-07-09 09:23:19 +02:00
11 changed files with 153 additions and 58 deletions

View File

@ -0,0 +1,32 @@
using MediatR;
namespace Leanetec.EConnect.Client.Alive;
public static class GetExtensions
{
/// <summary>
/// Checks if the application is alive by sending a <see cref="GetRequest"/> via MediatR.
/// </summary>
/// <param name="mediator">The MediatR instance to send the request through.</param>
/// <param name="role">Optional role of the logged-in user.</param>
/// <param name="apiVersion">Optional API version.</param>
/// <returns>A <see cref="Task{Boolean}"/> representing whether the application is alive.</returns>
public static Task<bool> IsAliveAsync(this IMediator mediator, Role? role = null, int? apiVersion = null) =>
mediator.Send(new GetRequest(role)
{
ApiVersion = apiVersion
});
/// <summary>
/// Checks if the application is alive by sending a <see cref="GetRequest"/> synchronously via MediatR.
/// </summary>
/// <param name="mediator">The MediatR instance to send the request through.</param>
/// <param name="role">Optional role of the logged-in user.</param>
/// <param name="apiVersion">Optional API version.</param>
/// <returns>True if the application is alive; otherwise, false.</returns>
public static bool IsAlive(this IMediator mediator, Role? role = null, int? apiVersion = null) =>
mediator.Send(new GetRequest(role)
{
ApiVersion = apiVersion
}).GetAwaiter().GetResult();
}

View File

@ -1,4 +1,4 @@
using Leanetec.EConnect.Client.Models;
using Leanetec.EConnect.Client.Dto;
using MediatR;
namespace Leanetec.EConnect.Client.Alive;
@ -9,7 +9,7 @@ public enum Role
Admin
}
public record GetRequest(Role? Role = null) : Request<bool>, IRequest<bool>
public record GetRequest(Role? Role = null) : HttpRequest<bool>, IRequest<bool>
{
}

View File

@ -1,17 +0,0 @@
using MediatR;
namespace Leanetec.EConnect.Client.Alive;
public static class MediatRExtensions
{
/// <summary>
/// Returns true if while the application is up.
/// </summary>
/// <param name="mediator"></param>
/// <param name="role">Role of logged user</param>
/// <returns></returns>
public static Task<bool> IsAliveAsync(this IMediator mediator, Role? role = null, int? apiVersion = null) => mediator.Send(new GetRequest(role)
{
ApiVersion = apiVersion
});
}

View File

@ -6,9 +6,9 @@ namespace Leanetec.EConnect.Client.Articles;
/// <summary>
/// Extension methods for the <see cref="IMediator"/> interface to simplify working with <see cref="Article"/> entities.
/// </summary>
public static class MediatRExtensions
public static class GetExtensions
{
#region GetRequest
#region GetArticleById
/// <summary>
/// Retrieves a single <see cref="Article"/> by its unique identifier.
@ -25,6 +25,25 @@ public static class MediatRExtensions
return articles.FirstOrDefault();
}
/// <summary>
/// Retrieves a single <see cref="Article"/> by its unique identifier.
/// </summary>
/// <param name="mediator">The <see cref="IMediator"/> instance used to send the request.</param>
/// <param name="id">The unique identifier of the article to retrieve.</param>
/// <param name="apiVersion">Optional API version to target the request.</param>
/// <returns>
/// The matching <see cref="Article"/>, or <c>null</c> if not found.
/// </returns>
public static Article? GetArticleById(this IMediator mediator, int id, int? apiVersion = null)
{
var articles = mediator.Send(new GetRequest(id) { ApiVersion = apiVersion }).GetAwaiter().GetResult();
return articles.FirstOrDefault();
}
#endregion
#region GetAllArticles
/// <summary>
/// Retrieves all available <see cref="Article"/> entities.
/// </summary>
@ -38,23 +57,18 @@ public static class MediatRExtensions
ApiVersion = apiVersion
});
#endregion
#region PostRequest
public static Task CreateArticleAsync(this IMediator mediator, Article article, int? apiVersion = null) => mediator.Send(new PostRequest(article)
/// <summary>
/// Retrieves all available <see cref="Article"/> entities.
/// </summary>
/// <param name="mediator">The <see cref="IMediator"/> instance used to send the request.</param>
/// <param name="apiVersion">Optional API version to target the request.</param>
/// <returns>
/// A collection of all available <see cref="Article"/> entities.
/// </returns>
public static IEnumerable<Article> GetAllArticles(this IMediator mediator, int? apiVersion = null) => mediator.Send(new GetRequest()
{
ApiVersion = apiVersion
});
#endregion
#region PutRequest
public static Task UpdateArticleAsync(this IMediator mediator, Article article, int? apiVersion = null) => mediator.Send(new PutRequest(article)
{
ApiVersion = apiVersion
});
}).GetAwaiter().GetResult();
#endregion
}

View File

@ -1,10 +1,10 @@
using Leanetec.EConnect.Client.Models;
using Leanetec.EConnect.Client.Dto;
using Leanetec.EConnect.Domain.Entities;
using MediatR;
namespace Leanetec.EConnect.Client.Articles;
public record GetRequest(int? ArticleId = null) : Request<IEnumerable<Article>>, IRequest<IEnumerable<Article>>
public record GetRequest(int? ArticleId = null) : HttpRequest<IEnumerable<Article>>, IRequest<IEnumerable<Article>>
{
}

View File

@ -0,0 +1,33 @@
using Leanetec.EConnect.Domain.Entities;
using MediatR;
namespace Leanetec.EConnect.Client.Articles;
/// <summary>
/// Extension methods for the <see cref="IMediator"/> interface to simplify working with <see cref="Article"/> entities.
/// </summary>
public static class PostExtensions
{
/// <summary>
/// Sends a request to create a new <see cref="Article"/> using MediatR.
/// </summary>
/// <param name="mediator">The <see cref="IMediator"/> instance used to send the request.</param>
/// <param name="article">The <see cref="Article"/> entity to be created.</param>
/// <param name="apiVersion">Optional API version to include in the request.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
public static Task CreateArticleAsync(this IMediator mediator, Article article, int? apiVersion = null) => mediator.Send(new PostRequest(article)
{
ApiVersion = apiVersion
});
/// <summary>
/// Sends a request to create a new <see cref="Article"/> using MediatR.
/// </summary>
/// <param name="mediator">The <see cref="IMediator"/> instance used to send the request.</param>
/// <param name="article">The <see cref="Article"/> entity to be created.</param>
/// <param name="apiVersion">Optional API version to include in the request.</param>
public static void CreateArticle(this IMediator mediator, Article article, int? apiVersion = null) => mediator.Send(new PostRequest(article)
{
ApiVersion = apiVersion
}).GetAwaiter().GetResult();
}

View File

@ -1,10 +1,10 @@
using Leanetec.EConnect.Client.Models;
using Leanetec.EConnect.Client.Dto;
using Leanetec.EConnect.Domain.Entities;
using MediatR;
namespace Leanetec.EConnect.Client.Articles;
public record PostRequest(Article Article) : Request, IRequest
public record PostRequest(Article Article) : HttpRequest, IRequest
{
}

View File

@ -0,0 +1,33 @@
using Leanetec.EConnect.Domain.Entities;
using MediatR;
namespace Leanetec.EConnect.Client.Articles;
/// <summary>
/// Extension methods for the <see cref="IMediator"/> interface to simplify working with <see cref="Article"/> entities.
/// </summary>
public static class PutExtensions
{
/// <summary>
/// Sends a request to update an existing <see cref="Article"/> using MediatR.
/// </summary>
/// <param name="mediator">The <see cref="IMediator"/> instance used to send the request.</param>
/// <param name="article">The <see cref="Article"/> entity to be updated.</param>
/// <param name="apiVersion">Optional API version to include in the request.</param>
/// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
public static Task UpdateArticleAsync(this IMediator mediator, Article article, int? apiVersion = null) => mediator.Send(new PutRequest(article)
{
ApiVersion = apiVersion
});
/// <summary>
/// Sends a request to update an existing <see cref="Article"/> using MediatR.
/// </summary>
/// <param name="mediator">The <see cref="IMediator"/> instance used to send the request.</param>
/// <param name="article">The <see cref="Article"/> entity to be updated.</param>
/// <param name="apiVersion">Optional API version to include in the request.</param>
public static void UpdateArticle(this IMediator mediator, Article article, int? apiVersion = null) => mediator.Send(new PutRequest(article)
{
ApiVersion = apiVersion
}).GetAwaiter().GetResult();
}

View File

@ -1,10 +1,10 @@
using Leanetec.EConnect.Client.Models;
using Leanetec.EConnect.Client.Dto;
using Leanetec.EConnect.Domain.Entities;
using MediatR;
namespace Leanetec.EConnect.Client.Articles;
public record PutRequest(Article Article) : Request, IRequest
public record PutRequest(Article Article) : HttpRequest, IRequest
{
}

View File

@ -0,0 +1,16 @@
using MediatR;
namespace Leanetec.EConnect.Client.Dto;
public record HttpRequestBase
{
public int? ApiVersion { get; set; }
}
public record HttpRequest : HttpRequestBase, IRequest
{
}
public record HttpRequest<TResponse> : HttpRequestBase, IRequest<TResponse>
{
}

View File

@ -1,16 +0,0 @@
using MediatR;
namespace Leanetec.EConnect.Client.Models;
public record CommonRequest
{
public int? ApiVersion { get; set; }
}
public record Request : CommonRequest, IRequest
{
}
public record Request<TResponse> : CommonRequest, IRequest<TResponse>
{
}