diff --git a/Verax_API_EF/Verax_API_EF/API/API.csproj b/Verax_API_EF/Verax_API_EF/API/API.csproj
index 01ea7d9..e993a90 100644
--- a/Verax_API_EF/Verax_API_EF/API/API.csproj
+++ b/Verax_API_EF/Verax_API_EF/API/API.csproj
@@ -26,6 +26,7 @@
+
diff --git a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs
index d83ebb8..b5b096c 100644
--- a/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs
+++ b/Verax_API_EF/Verax_API_EF/API/Controllers/ArticleController.cs
@@ -1,3 +1,4 @@
+using API_Mapping;
using API_Services;
using Microsoft.AspNetCore.Mvc;
using Model;
@@ -18,9 +19,9 @@ namespace API.Controllers
}
[HttpGet]
- public async Task GetAllArticles()
+ public async Task GetAllArticles([FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None)
{
- var result = await _articleService.GetAllArticles();
+ var result = (await _articleService.GetAllArticles(index, count, orderCriterium)).Select(a => a.ToDTO());
if (result == null)
{
return NotFound();
@@ -29,9 +30,9 @@ namespace API.Controllers
}
[HttpGet("/article/{id}")]
- public async Task GetArticleById(int id)
+ public async Task GetArticleById(int id, [FromQuery] int index = 0, [FromQuery] int count = 10, [FromQuery] ArticleOrderCriteria orderCriterium = ArticleOrderCriteria.None)
{
- var result = await _articleService.GetArticleById(id);
+ var result = await _articleService.GetArticleById(id, index, count, orderCriterium);
if (result == null)
{
return null;
diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db
index 9a47220..2cd90a9 100644
Binary files a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db and b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db differ
diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm
deleted file mode 100644
index 5e1d073..0000000
Binary files a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-shm and /dev/null differ
diff --git a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal b/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal
deleted file mode 100644
index 497cd7d..0000000
Binary files a/Verax_API_EF/Verax_API_EF/API/Entity_FrameWork.Article.db-wal and /dev/null differ
diff --git a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs
index adf65c2..b37ea0f 100644
--- a/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs
+++ b/Verax_API_EF/Verax_API_EF/API_DbDataManager/DbManagerArticle.cs
@@ -14,8 +14,68 @@ public class DbManagerArticle : IArticleService
{
_context = context;
}
+ public async Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium)
+ {
+ List articles = new List();
+
+ switch (orderCriterium)
+ {
+ case ArticleOrderCriteria.None:
+ articles = _context.ArticleSet.Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByLectureTime:
+ articles = _context.ArticleSet.OrderBy(a => a.LectureTime).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByTitle:
+ articles = _context.ArticleSet.OrderBy(a => a.Title).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByAuthor:
+ articles = _context.ArticleSet.OrderBy(a => a.Author).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByDatePublished:
+ articles = _context.ArticleSet.OrderBy(a => a.DatePublished).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByDescription:
+ articles = _context.ArticleSet.OrderBy(a => a.Description).Select(a => a.ToModel()).ToList();
+ break;
+ default:
+ articles = _context.ArticleSet.Select(a => a.ToModel()).ToList();
+ break;
+ }
+ return await Task.FromResult(articles.AsEnumerable());
+ }
+ public Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium)
+ {
+ List articles = new List();
+ switch (orderCriterium)
+ {
+ case ArticleOrderCriteria.None:
+ articles = _context.ArticleSet.Where(a => a.Id == id).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByLectureTime:
+ articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.LectureTime).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByTitle:
+ articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Title).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByAuthor:
+ articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Author).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByDatePublished:
+ articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.DatePublished).Select(a => a.ToModel()).ToList();
+ break;
+ case ArticleOrderCriteria.ByDescription:
+ articles = _context.ArticleSet.Where(a => a.Id == id).OrderBy(a => a.Description).Select(a => a.ToModel()).ToList();
+ break;
+ default:
+ articles = _context.ArticleSet.Where(a => a.Id == id).Select(a => a.ToModel()).ToList();
+ break;
+ }
+ return Task.FromResult(articles.FirstOrDefault());
+ }
+
public async Task CreateArticle(long id, string title, string description, string author, string date, int lectureTime)
{
var entity = new Entities.ArticleEntity()
@@ -56,14 +116,5 @@ public class DbManagerArticle : IArticleService
return true;
}
- public Task GetArticleById(int id)
- {
- var entity = _context.ArticleSet.FirstOrDefault(a => a.Id == id);
- return Task.FromResult(entity.ToModel());
- }
-
- public async Task> GetAllArticles()
- {
- return await Task.FromResult(_context.ArticleSet.Select(a => a.ToModel()).AsEnumerable());
- }
+
}
\ No newline at end of file
diff --git a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs
index 2bbeac2..28a2851 100644
--- a/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs
+++ b/Verax_API_EF/Verax_API_EF/API_Services/IArticleService.cs
@@ -4,6 +4,12 @@ namespace API_Services
{
public interface IArticleService
{
+
+ Task> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium);
+
+ Task GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium);
+
+
Task CreateArticle(long id, string title, string description, string author, string date,
int lectureTime);
@@ -11,9 +17,6 @@ namespace API_Services
Task UpdateArticle(long id, Article? a);
- Task GetArticleById(int id);
-
- Task> GetAllArticles();
-
+
}
}
diff --git a/Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs b/Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs
new file mode 100644
index 0000000..bf34437
--- /dev/null
+++ b/Verax_API_EF/Verax_API_EF/Model/ArticleOrderCriteria.cs
@@ -0,0 +1,6 @@
+namespace Model;
+
+public enum ArticleOrderCriteria
+{
+ None, ByTitle, ByAuthor, ByLectureTime, ByDatePublished, ByDescription
+}
\ No newline at end of file
diff --git a/Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs b/Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs
new file mode 100644
index 0000000..f36ca89
--- /dev/null
+++ b/Verax_API_EF/Verax_API_EF/Model/FormOrderCriteria.cs
@@ -0,0 +1,6 @@
+namespace Model;
+
+public enum FormOrderCriteria
+{
+ None, ByTheme, ByDate, ByPseudo, ByLien
+}
\ No newline at end of file
diff --git a/Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs b/Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs
new file mode 100644
index 0000000..a7966db
--- /dev/null
+++ b/Verax_API_EF/Verax_API_EF/Model/UserOrderCriteria.cs
@@ -0,0 +1,6 @@
+namespace Model;
+
+public enum UserOrderCriteria
+{
+ None, ByFirstName, ByLastName
+}
\ No newline at end of file