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
{
///
/// Role
///
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class RoleController : BaseController
{
public IMediator _mediator { get; set; }
///
/// Role
///
///
public RoleController(
IMediator mediator)
{
_mediator = mediator;
}
///
/// Create A Role
///
///
///
[HttpPost]
[Produces("application/json", "application/xml", Type = typeof(RoleDto))]
[ClaimCheck("role_add")]
public async Task AddRole(AddRoleCommand addRoleCommand)
{
var result = await _mediator.Send(addRoleCommand);
if (!result.Success)
{
return ReturnFormattedResponse(result);
}
return CreatedAtAction("GetRole", new { id = result.Data.Id }, result.Data);
}
///
/// Update Exist Role By Id
///
///
///
///
[HttpPut("{id}")]
[Produces("application/json", "application/xml", Type = typeof(RoleDto))]
[ClaimCheck("role_edit")]
public async Task UpdateRole(Guid id, UpdateRoleCommand updateRoleCommand)
{
updateRoleCommand.Id = id;
var result = await _mediator.Send(updateRoleCommand);
return ReturnFormattedResponse(result);
}
///
/// Get Role By Id
///
///
///
[HttpGet("{id}", Name = "GetRole")]
[Produces("application/json", "application/xml", Type = typeof(RoleDto))]
[ClaimCheck("role_list")]
public async Task GetRole(Guid id)
{
var getRoleQuery = new GetRoleQuery { Id = id };
var result = await _mediator.Send(getRoleQuery);
return ReturnFormattedResponse(result);
}
///
/// Get All Roles
///
///
[HttpGet(Name = "GetRoles")]
[Produces("application/json", "application/xml", Type = typeof(List))]
[ClaimCheck("role_list", "user_edit", "user_add", "user_role_edit")]
public async Task GetRoles()
{
var getAllRoleQuery = new GetAllRoleQuery { };
var result = await _mediator.Send(getAllRoleQuery);
return Ok(result);
}
///
/// Delete Role By Id
///
///
///
[HttpDelete("{Id}")]
[ClaimCheck("role_delete")]
public async Task DeleteRole(Guid Id)
{
var deleteRoleCommand = new DeleteRoleCommand { Id = Id };
var result = await _mediator.Send(deleteRoleCommand);
return ReturnFormattedResponse(result);
}
}
}