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/permission")] [ApiController] [Authorize] public class AdminPermissionController : ControllerBase { private readonly IPermissionService permissionService; public AdminPermissionController(IPermissionService permissionService) { this.permissionService = permissionService; } /// /// Получает список всех разрешений для роли /// /// id роли /// Токен отмены задачи /// [HttpGet] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] public async Task GetByIdRoleAsync(int idRole, CancellationToken token = default) { var result = await permissionService.GetByIdRoleAsync(idRole, token); return Ok(result); } /// /// Добавляет разрешения для роли /// /// Объекты новых разрешений для справочника /// Токен отмены задачи /// [HttpPost] [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); } /// /// Обновляет разрешение для роли /// /// Объект разрешения для справочника /// Токен отмены задачи /// [HttpPut] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task UpdateAsync(PermissionDto dto, CancellationToken token = default) { var result = await permissionService.UpdateAsync(dto, token); return Ok(result); } /// /// Удаляет разрешение для роли /// /// id разрешения /// id роли для удаления разрешения /// Токен отмены задачи /// [HttpDelete("{idPermission}/{idUserRole}")] [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)] public async Task DeleteAsync(int idUserRole, int idPermission, CancellationToken token = default) { var result = await permissionService.DeleteAsync(idUserRole, idPermission, token); return Ok(result); } } }