reactredux/webapi/WeatherForecast/Controllers/ShopCatalogController.cs

78 lines
2.2 KiB
C#

using Core.Abstractions.Models;
using Core.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using WeatherForecast.Models;
namespace WeatherForecast.Controllers;
#region Response models
public class GetShopCatalogResponse : ResponseModel {
public PaginationModel<ShopItemModel> ShopItemsPagination { get; set; }
}
#endregion
[AllowAnonymous]
[ApiController]
[Route("api/[controller]")]
public class ShopCatalogController : ControllerBase {
private readonly ILogger<LoginController> _logger;
public ShopCatalogController(ILogger<LoginController> logger) {
_logger = logger;
}
/// <summary>
///
/// </summary>
/// <param name="category"></param>
/// <param name="searchText"></param>
/// <param name="currentPage"></param>
/// <param name="itemsPerPage"></param>
/// <returns></returns>
[HttpGet]
public IActionResult Get([FromQuery] Guid? category, [FromQuery] string? searchText, [FromQuery] int currentPage = 1, [FromQuery] int itemsPerPage = 8) {
var shopModels = new List<ShopItemModel>();
for (int i = 0; i < 8; i++) {
var shopItemModel = new ShopItemModel {
Id = Guid.NewGuid(),
Slug = "shop-catalog-item",
Image = new ImageModel { Src = "https://dummyimage.com/450x300/dee2e6/6c757d.jpg", Alt = "..." },
Badge = "sale",
Title = "Shop item title",
ShortText = "Lorem ipsum, dolor sit amet consectetur adipisicing elit. Eaque fugit ratione dicta mollitia. Officiis ad...",
Text = "",
Author = new AuthorModel {
Id = Guid.NewGuid(),
Image = new ImageModel { Src = "https://dummyimage.com/40x40/ced4da/6c757d", Alt = "..." },
NickName = "Admin"
},
Created = DateTime.UtcNow,
Tags = new List<string> { "react", "redux", "webapi" },
Rating = 4.5,
Price = 20,
NewPrice = 10
};
shopModels.Add(shopItemModel);
}
var shopCatalogResponse = new GetShopCatalogResponse {
ShopItemsPagination = new PaginationModel<ShopItemModel> {
CurrentPage = currentPage,
TotalPages = 100,
Items = shopModels
}
};
return Ok(shopCatalogResponse);
}
}