diff --git a/Controllers/CategoryController.cs b/Controllers/CategoryController.cs index ff65760..160ba38 100644 --- a/Controllers/CategoryController.cs +++ b/Controllers/CategoryController.cs @@ -29,19 +29,20 @@ public class CategoryController : ControllerBase // GET /api/v1/categories /// - /// Get every category + /// Get a page category /// /// /// Can (and will) return an empty list if no categories are found in DB.
/// Has CORS set. ///
+ /// The page number /// Returned on valid request - // /// Returned when there are no categories to list - [HttpGet] + /// Returned when requested page is invalid (page_no <= 0) + [HttpGet("{page_no}")] [EnableCors] [ProducesResponseType(typeof(CategoryShortDTO), 200)] - // [ProducesResponseType(typeof(ErrorDTO), 404)] - public async Task GetQuotePage() + [ProducesResponseType(typeof(ErrorDTO), 404)] + public async Task GetCategoryPage(int page_no = 1) { // The following seems to be a bad idea, so I leave it as is. ~eee4 // @@ -49,12 +50,23 @@ public class CategoryController : ControllerBase // // if (totalCategories <= 0) // { - // return NotFound(new ErrorDTO { Status = "error", Error_msg = "No categories to list" }); + // return NoContent(new ErrorDTO { Status = "error", Error_msg = "No categories to list" }); // } + const int PageSize = 10; + + if (page_no <= 0) + { + return NotFound(new ErrorDTO { Status = "error", Error_msg = "Numer strony musi być większy niż 0" }); + } + // Get all the categories + //List categories = await _db.Categories + // .ToListAsync(); List categories = await _db.Categories - .ToListAsync(); + .Skip((page_no - 1) * PageSize) + .Take(PageSize) + .ToListAsync(); // Convert them to a list of DTO List result = categories diff --git a/Controllers/QuoteController.cs b/Controllers/QuoteController.cs index 89e4719..6ff2fc7 100644 --- a/Controllers/QuoteController.cs +++ b/Controllers/QuoteController.cs @@ -1,14 +1,11 @@ using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Authorization.Infrastructure; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Update.Internal; using QuotifyBE.Data; using QuotifyBE.DTOs; using QuotifyBE.Entities; using QuotifyBE.Mapping; -using System.Reflection.Metadata.Ecma335; using System.Security.Claims; namespace QuotifyBE.Controllers; @@ -50,7 +47,7 @@ public class QuotesController : ControllerBase [EnableCors] [ProducesResponseType(typeof(List), 200)] [ProducesResponseType(typeof(ErrorDTO), 404)] - public async Task GetQuotePage(int page_no, string? sort = "desc", [FromQuery] string? category_id = null) + public async Task GetQuotePage(int page_no = 1, string? sort = "desc", [FromQuery] string? category_id = null) { var totalQuotes = await _db.Quotes.CountAsync(); const int PageSize = 10; @@ -197,7 +194,10 @@ public class QuotesController : ControllerBase if ( !request.ImageUrl.StartsWith("http://") && !request.ImageUrl.StartsWith("https://") && !request.ImageUrl.StartsWith("/")) - return StatusCode(406, new ErrorDTO { Status = "error", Error_msg = "Image URLs should point to http/https url or a local resource" }); + return StatusCode(406, new ErrorDTO { + Status = "error", + Error_msg = "Image URLs should point to http/https url or a local resource" + }); image = new Image { Url = request.ImageUrl }; _db.Images.Add(image); @@ -414,7 +414,10 @@ public class QuotesController : ControllerBase if ( !updatedQuote.ImageUrl.StartsWith("http://") && !updatedQuote.ImageUrl.StartsWith("https://") && !updatedQuote.ImageUrl.StartsWith("/")) - return StatusCode(406, new ErrorDTO { Status = "error", Error_msg = "Image URLs should point to http/https url or a local resource" }); + return StatusCode(406, new ErrorDTO { + Status = "error", + Error_msg = "Image URLs should point to http/https url or a local resource" + }); image = new Image { Url = updatedQuote.ImageUrl }; _db.Images.Add(image);