diff --git a/AsbCloudApp/Services/IPermissionService.cs b/AsbCloudApp/Services/IPermissionService.cs index 93f4f595..c3bdf2c9 100644 --- a/AsbCloudApp/Services/IPermissionService.cs +++ b/AsbCloudApp/Services/IPermissionService.cs @@ -7,11 +7,10 @@ namespace AsbCloudApp.Services { public interface IPermissionService { - Task> GetPermissionsAsync(int idRole, CancellationToken token); - Task InsertPermissionAsync(PermissionDto dto, CancellationToken token); - Task InsertPermissionsRangeAsync(IEnumerable dtos, CancellationToken token); - Task UpdatePermissionAsync(int id, PermissionDto dto, CancellationToken token); - Task DeletePermissionAsync(int idRole, int idPermission, CancellationToken token); + Task> GetallAsync(int idRole, CancellationToken token); + Task InsertRangeAsync(IEnumerable dtos, CancellationToken token); + Task UpdateAsync(int id, PermissionDto dto, CancellationToken token); + Task DeleteAsync(int idRole, int idPermission, CancellationToken token); } } \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/PermissionService.cs b/AsbCloudInfrastructure/Services/PermissionService.cs index 05cf9bfe..b79824ae 100644 --- a/AsbCloudInfrastructure/Services/PermissionService.cs +++ b/AsbCloudInfrastructure/Services/PermissionService.cs @@ -20,7 +20,7 @@ namespace AsbCloudInfrastructure.Services } - public async Task> GetPermissionsAsync(int idRole, CancellationToken token) + public async Task> GetallAsync(int idRole, CancellationToken token) { var entities = await (from p in db.Permissions where p.IdUserRole == idRole @@ -30,14 +30,7 @@ namespace AsbCloudInfrastructure.Services return dto; } - public Task InsertPermissionAsync(PermissionDto dto, CancellationToken token) - { - var entity = dto.Adapt(); - db.Permissions.Add(entity); - return db.SaveChangesAsync(token); - } - - public Task InsertPermissionsRangeAsync(IEnumerable dtos, CancellationToken token) + public Task InsertRangeAsync(IEnumerable dtos, CancellationToken token) { var entities = dtos.Adapt(); @@ -45,14 +38,14 @@ namespace AsbCloudInfrastructure.Services return db.SaveChangesAsync(token); } - public Task UpdatePermissionAsync(int id, PermissionDto dto, CancellationToken token) + public Task UpdateAsync(int id, PermissionDto dto, CancellationToken token) { var entity = dto.Adapt(); db.Permissions.Update(entity); return db.SaveChangesAsync(token); } - public Task DeletePermissionAsync(int idRole, int idPermission, CancellationToken token) + public Task DeleteAsync(int idRole, int idPermission, CancellationToken token) { var entities = db.Permissions.AsNoTracking() .Where(e => e.IdUserRole == idRole && e.IdPermission == idPermission) diff --git a/AsbCloudWebApi/Controllers/AdminPermissionController.cs b/AsbCloudWebApi/Controllers/AdminPermissionController.cs index 508793a2..b7e6c2a4 100644 --- a/AsbCloudWebApi/Controllers/AdminPermissionController.cs +++ b/AsbCloudWebApi/Controllers/AdminPermissionController.cs @@ -1,3 +1,6 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; using AsbCloudApp.Data; using AsbCloudApp.Services; using Microsoft.AspNetCore.Authorization; @@ -5,7 +8,7 @@ using Microsoft.AspNetCore.Mvc; namespace AsbCloudWebApi.Controllers { - [Route("api/admin/user/permission")] + [Route("api/admin/user")] [ApiController] [Authorize] public class AdminPermissionController : ControllerBase @@ -19,5 +22,138 @@ namespace AsbCloudWebApi.Controllers 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); + } } } \ No newline at end of file