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);
}
}
}