using System; using System.Collections.Generic; using System.Threading.Tasks; using UserManagement.Data.Dto; using UserManagement.MediatR.Commands; using UserManagement.MediatR.Queries; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using UserManagement.Api.Helpers; namespace UserManagement.API.Controllers { /// /// Page /// [Route("api")] [ApiController] [Authorize] public class PageController : BaseController { public IMediator _mediator { get; set; } /// /// Page /// /// public PageController(IMediator mediator) { _mediator = mediator; } /// /// Get Page By Id /// /// /// [HttpGet("Page/{id}", Name = "GetPage")] [Produces("application/json", "application/xml", Type = typeof(PageDto))] [ClaimCheck("page_list")] public async Task GetPage(Guid id) { var getPageQuery = new GetPageQuery { Id = id }; var result = await _mediator.Send(getPageQuery); return ReturnFormattedResponse(result); } /// /// Get All Pages /// /// Test /// Returns the newly created item [HttpGet("Pages")] [Produces("application/json", "application/xml", Type = typeof(List))] [ClaimCheck("page_list", "role_add", "role_edit", "page_action_edit", "user_permission_edit")] public async Task GetPages() { var getAllPageQuery = new GetAllPageQuery { }; var result = await _mediator.Send(getAllPageQuery); return Ok(result); } /// /// Create a Page /// /// /// [HttpPost("Page")] [Produces("application/json", "application/xml", Type = typeof(PageDto))] [ClaimCheck("page_add")] public async Task AddPage(AddPageCommand addPageCommand) { var result = await _mediator.Send(addPageCommand); if (!result.Success) { return ReturnFormattedResponse(result); } return CreatedAtAction("GetPage", new { id = result.Data.Id }, result.Data); } /// /// Update Page By Id /// /// /// /// [HttpPut("Page/{Id}")] [Produces("application/json", "application/xml", Type = typeof(PageDto))] [ClaimCheck("page_edit")] public async Task UpdatePage(Guid Id, UpdatePageCommand updatePageCommand) { updatePageCommand.Id = Id; var result = await _mediator.Send(updatePageCommand); return ReturnFormattedResponse(result); } /// /// Delete Page By Id /// /// /// [HttpDelete("Page/{Id}")] [ClaimCheck("page_delete")] public async Task DeletePage(Guid Id) { var deletePageCommand = new DeletePageCommand { Id = Id }; var result = await _mediator.Send(deletePageCommand); return ReturnFormattedResponse(result); } } }