- > GetByAuthorId(GetArticlesByAuthorIdContract contract)
+ {
+ return await ExecuteUseCase
- , GetArticlesByAuthorIdContract>(contract);
+ }
+
public async Task
- > GetByCategoryId(GetArticlesByCategoryIdContract contract)
{
return await ExecuteUseCase
- , GetArticlesByCategoryIdContract>(contract);
diff --git a/ScienceArchive.Server/ScienceArchive.BusinessLogic/UseCases/Article/GetArticlesByAuthorIdUseCase.cs b/ScienceArchive.Server/ScienceArchive.BusinessLogic/UseCases/Article/GetArticlesByAuthorIdUseCase.cs
new file mode 100644
index 00000000..b7a544fb
--- /dev/null
+++ b/ScienceArchive.Server/ScienceArchive.BusinessLogic/UseCases/Article/GetArticlesByAuthorIdUseCase.cs
@@ -0,0 +1,21 @@
+using ScienceArchive.BusinessLogic.Interfaces;
+using ScienceArchive.Core.Domain.Aggregates.Article;
+using ScienceArchive.Core.Repositories;
+using ScienceArchive.Core.Services.ArticleContracts;
+
+namespace ScienceArchive.BusinessLogic.ArticleUseCases;
+
+public class GetArticlesByAuthorIdUseCase : IUseCase
- , GetArticlesByAuthorIdContract>
+{
+ private readonly IArticleRepository _articleRepository;
+
+ public GetArticlesByAuthorIdUseCase(IArticleRepository articleRepository)
+ {
+ _articleRepository = articleRepository ?? throw new ArgumentNullException(nameof(articleRepository));
+ }
+
+ public async Task
- > Execute(GetArticlesByAuthorIdContract contract)
+ {
+ return await _articleRepository.GetByAuthorId(contract.AuthorId);
+ }
+}
\ No newline at end of file
diff --git a/ScienceArchive.Server/ScienceArchive.Core/Repositories/IArticleRepository.cs b/ScienceArchive.Server/ScienceArchive.Core/Repositories/IArticleRepository.cs
index fe418752..5a6126a0 100644
--- a/ScienceArchive.Server/ScienceArchive.Core/Repositories/IArticleRepository.cs
+++ b/ScienceArchive.Server/ScienceArchive.Core/Repositories/IArticleRepository.cs
@@ -1,6 +1,7 @@
using ScienceArchive.Core.Domain.Aggregates.Article;
using ScienceArchive.Core.Domain.Aggregates.Article.ValueObjects;
using ScienceArchive.Core.Domain.Aggregates.Category.ValueObjects;
+using ScienceArchive.Core.Domain.Aggregates.User.ValueObjects;
using ScienceArchive.Core.Repositories.Common;
namespace ScienceArchive.Core.Repositories;
@@ -16,4 +17,11 @@ public interface IArticleRepository : ICrudRepository
- > GetByCategoryId(CategoryId categoryId);
+
+ ///
- > GetByAuthorId(UserId userId);
}
\ No newline at end of file
diff --git a/ScienceArchive.Server/ScienceArchive.Core/Services/Article/Contracts/GetArticlesByAuthorIdContract.cs b/ScienceArchive.Server/ScienceArchive.Core/Services/Article/Contracts/GetArticlesByAuthorIdContract.cs
new file mode 100644
index 00000000..129664bd
--- /dev/null
+++ b/ScienceArchive.Server/ScienceArchive.Core/Services/Article/Contracts/GetArticlesByAuthorIdContract.cs
@@ -0,0 +1,9 @@
+using ScienceArchive.Core.Domain.Aggregates.User.ValueObjects;
+
+namespace ScienceArchive.Core.Services.ArticleContracts;
+
+///
- > GetByAuthorId(GetArticlesByAuthorIdContract contract);
+
///
- > GetByCategoryId(CategoryId categoryId)
return articles.Select(_mapper.MapToEntity).ToList();
}
-
+
+ public async Task
- > GetByAuthorId(UserId userId)
+ {
+ var parameters = new DynamicParameters();
+ parameters.Add("UserId", userId.Value);
+
+ var articles = await _connection.QueryAsync
{{article!.title}}
+{{article!.description}}
+{{name}}
+ +My Articles
+ +Loading...
+My Profile
+ +Articles
Loading...
+