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