using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using DomainResults.Mvc; using WeatherForecast.Services; using WeatherForecast.Policies; using Core.Enumerations; using DataProviders.Collections; using WeatherForecast.Models.Requests; namespace WeatherForecast.Controllers; /// /// /// [ApiController] [Route("api/[controller]")] public class BlogItemsController : ControllerBase { private readonly IAuthorizationService _authorizationService; private readonly IBlogCatalogDataProvider _blogCatalogDataProvider; private readonly IBlogItemsService _blogItemsService; /// /// /// /// /// /// public BlogItemsController( IAuthorizationService authorizationService, IBlogCatalogDataProvider blogCatalogDataProvider, IBlogItemsService blogItemsService ) { _authorizationService = authorizationService; _blogCatalogDataProvider = blogCatalogDataProvider; _blogItemsService = blogItemsService; } #region Authless methods /// /// /// /// /// /// /// /// /// /// [HttpGet("{siteId}")] public IActionResult Get([FromRoute] Guid siteId, [FromQuery] Guid? category, [FromQuery] string? searchText, [FromQuery] int? currentPage, [FromQuery] int? itemsPerPage, [FromQuery] string? locale) { var result = _blogItemsService.Get(siteId, category, currentPage ?? 1, itemsPerPage ?? 8, locale, searchText); return result.ToActionResult(); } #endregion //[HttpDelete("{siteId}")] //public async Task Delete([FromRoute] Guid siteId, [FromBody] BlogItemsRequestModel requestData) { // var (blogItems, getBlogItemsResult) = _blogCatalogDataProvider.GetMany(siteId, requestData.Ids); // if (!getBlogItemsResult.IsSuccess || blogItems == null) // return getBlogItemsResult.ToActionResult(); // if ((await _authorizationService.AuthorizeAsync(User, blogItems, new BlogAuthorizationRequirement { // WhiteListToken = true, // SameAuthor = true, // Action = CrudActions.Delete // })).Succeeded) { // var result = _blogCatalogDataProvider.DeleteMany(siteId, requestData.Ids); // return result.ToActionResult(); // } // return Unauthorized(); //} }