using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace AsbCloudWebApi.Controllers { [Route("api/admin/user")] [ApiController] [Authorize] public class AdminPermissionController : ControllerBase { private readonly IPermissionService permissionService; private readonly ICrudService permissionInfoService; public AdminPermissionController(IPermissionService permissionService, ICrudService permissionInfoService) { this.permissionService = permissionService; this.permissionInfoService = permissionInfoService; } /// /// Получает список доступных в справочнике разрешений /// /// Токен отмены задачи /// [HttpGet("permissionInfo")] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] public async Task GetAllAsync(CancellationToken token = default) { var result = await permissionInfoService.GetAllAsync(token); return Ok(result); } /// /// Получает запрашиваемое из справочника разрешение /// /// id запрашиваемого разрешения из справочника /// Токен отмены задачи /// [HttpGet("permissionInfo/{id}")] [ProducesResponseType(typeof(PermissionInfoDto), (int)System.Net.HttpStatusCode.OK)] public async Task GetAsync(int id, CancellationToken token = default) { var result = await permissionInfoService.GetAsync(id, token); return Ok(result); } /// /// Добавляет разрешения для роли /// /// Объекты новых разрешений для справочника /// Токен отмены задачи /// [HttpPost("permissionInfo")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task InsertRangeAsync(IEnumerable dtos, CancellationToken token = default) { var result = await permissionInfoService.InsertRangeAsync(dtos, token); return Ok(result); } /// /// Обновляет разрешение для роли /// /// id объекта разрешения /// Объект разрешения /// Токен отмены задачи /// [HttpPut("permissionInfo")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task UpdateAsync(int id, PermissionInfoDto dto, CancellationToken token = default) { var result = await permissionInfoService.UpdateAsync(id, dto, token); return Ok(result); } /// /// Удаляет разрешение для роли /// /// id объекта разрешения из справочника /// Токен отмены задачи /// [HttpDelete("permissionInfo")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task DeleteAsync(int id, CancellationToken token = default) { var result = await permissionInfoService.DeleteAsync(id, token); return Ok(result); } /// /// Получает список всех разрешений для роли /// /// id роли /// Токен отмены задачи /// [HttpGet("permission")] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] public async Task GetAllAsync(int idRole, CancellationToken token = default) { var result = await permissionService.GetallAsync(idRole, token); return Ok(result); } /// /// Добавляет разрешения для роли /// /// Объекты новых разрешений для справочника /// Токен отмены задачи /// [HttpPost("permission")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task InsertRangeAsync(IEnumerable dtos, CancellationToken token = default) { var result = await permissionService.InsertRangeAsync(dtos, token); return Ok(result); } /// /// Обновляет разрешение в правочник /// /// id объекта разрешения для справочника /// Объект разрешения для справочника /// Токен отмены задачи /// [HttpPut("permission")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task UpdateAsync(int id, PermissionDto dto, CancellationToken token = default) { var result = await permissionService.UpdateAsync(id, dto, token); return Ok(result); } /// /// Удаляет разрешение для роли /// /// id роли для удаления разрешения /// id разрешения /// Токен отмены задачи /// [HttpDelete("permission")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task DeleteAsync(int idRole, int idPermission, CancellationToken token = default) { var result = await permissionService.DeleteAsync(idRole, idPermission, token); return Ok(result); } } }