ADD pagination + Filtrage

testTony
Tony Fages 1 year ago
parent fc31bb46f0
commit 6323399018

@ -26,6 +26,7 @@
<ItemGroup>
<ProjectReference Include="..\API_DbDataManager\API_DbDataManager.csproj" />
<ProjectReference Include="..\API_Mapping\API_Mapping.csproj" />
<ProjectReference Include="..\API_Services\API_Services.csproj" />
<ProjectReference Include="..\StubbedContextLib\StubbedContextLib.csproj" />
</ItemGroup>

@ -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<IActionResult> GetAllArticles()
public async Task<IActionResult> 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<Article?> GetArticleById(int id)
public async Task<Article?> 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;

@ -14,8 +14,68 @@ public class DbManagerArticle : IArticleService
{
_context = context;
}
public async Task<IEnumerable<Article?>> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium)
{
List<Article> articles = new List<Article>();
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<Article?> GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium)
{
List<Article> articles = new List<Article>();
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<Article?> 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<Article?> GetArticleById(int id)
{
var entity = _context.ArticleSet.FirstOrDefault(a => a.Id == id);
return Task.FromResult(entity.ToModel());
}
public async Task<IEnumerable<Article?>> GetAllArticles()
{
return await Task.FromResult(_context.ArticleSet.Select(a => a.ToModel()).AsEnumerable());
}
}

@ -4,6 +4,12 @@ namespace API_Services
{
public interface IArticleService
{
Task<IEnumerable<Article?>> GetAllArticles(int index, int count, ArticleOrderCriteria orderCriterium);
Task<Article?> GetArticleById(int id, int index, int count, ArticleOrderCriteria orderCriterium);
Task<Article?> CreateArticle(long id, string title, string description, string author, string date,
int lectureTime);
@ -11,9 +17,6 @@ namespace API_Services
Task<bool> UpdateArticle(long id, Article? a);
Task<Article?> GetArticleById(int id);
Task<IEnumerable<Article?>> GetAllArticles();
}
}

@ -0,0 +1,6 @@
namespace Model;
public enum ArticleOrderCriteria
{
None, ByTitle, ByAuthor, ByLectureTime, ByDatePublished, ByDescription
}

@ -0,0 +1,6 @@
namespace Model;
public enum FormOrderCriteria
{
None, ByTheme, ByDate, ByPseudo, ByLien
}

@ -0,0 +1,6 @@
namespace Model;
public enum UserOrderCriteria
{
None, ByFirstName, ByLastName
}
Loading…
Cancel
Save