From 654cd159bc207108a800ec7864c138da05e74b2e Mon Sep 17 00:00:00 2001 From: csimonapastore Date: Thu, 27 Mar 2025 19:05:15 +0100 Subject: [PATCH] Added RoleController --- .../Controllers/RoleController_Tests.cs | 667 ++++++++++++++++++ .../Controllers/UserController_Tests.cs | 4 +- MainProject/Controllers/RoleController.cs | 162 +++++ .../Middlewares/AutoMapperConfiguration.cs | 2 + MainProject/Models/Api/Common/Role/RoleDto.cs | 14 + .../Api/Request/Role/CreateRoleRequest.cs | 10 + .../Api/Response/Role/GetRoleResponse.cs | 8 + 7 files changed, 865 insertions(+), 2 deletions(-) create mode 100644 MainProject.Tests/Controllers/RoleController_Tests.cs create mode 100644 MainProject/Controllers/RoleController.cs create mode 100644 MainProject/Models/Api/Common/Role/RoleDto.cs create mode 100644 MainProject/Models/Api/Request/Role/CreateRoleRequest.cs create mode 100644 MainProject/Models/Api/Response/Role/GetRoleResponse.cs diff --git a/MainProject.Tests/Controllers/RoleController_Tests.cs b/MainProject.Tests/Controllers/RoleController_Tests.cs new file mode 100644 index 0000000..4c7d6f2 --- /dev/null +++ b/MainProject.Tests/Controllers/RoleController_Tests.cs @@ -0,0 +1,667 @@ +using System; +using System.Reflection; +using System.Net; +using System.Net.Http; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.Extensions.Configuration; +using Moq; +using BasicDotnetTemplate.MainProject.Controllers; +using BasicDotnetTemplate.MainProject.Services; +using BasicDotnetTemplate.MainProject.Models.Api.Response; +using BasicDotnetTemplate.MainProject.Models.Api.Common.Role; +using DatabaseSqlServer = BasicDotnetTemplate.MainProject.Models.Database.SqlServer; +using Microsoft.AspNetCore.Http; +using BasicDotnetTemplate.MainProject.Models.Api.Request.Role; +using BasicDotnetTemplate.MainProject.Models.Api.Data.Role; +using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; +using Newtonsoft.Json; + + +namespace BasicDotnetTemplate.MainProject.Tests; + +[TestClass] +public class RoleController_Tests +{ + private Mock? _roleServiceMock; + private RoleController? _roleController; + + [TestInitialize] + public void Setup() + { + IConfiguration configuration = TestUtils.CreateConfiguration(); + _roleServiceMock = new Mock(); + _roleController = new RoleController(configuration, _roleServiceMock?.Object); + } + + [TestMethod] + public void RoleController_NullConfiguration() + { + Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development"); + var exception = true; + try + { + var roleServiceMock = new Mock(); + _ = new RoleController(null, roleServiceMock.Object); + exception = false; + Assert.Fail($"This test should not pass as configuration is null"); + } + catch (Exception) + { + Assert.IsTrue(exception); + } + } + + + [TestMethod] + public async Task GetRoleByGuidAsync_Should_Return_200_When_Successful() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid)); + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status200OK); + Assert.IsInstanceOfType(result.Data, typeof(RoleDto)); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task GetRoleByGuidAsync_GuidIsEmpty() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = String.Empty; + DatabaseSqlServer.Role? role = null; + + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Request is not well formed"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task GetRoleByGuidAsync_NotFound() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.Role? role = null; + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + NotFoundResult response = (NotFoundResult)(await _roleController.GetRoleByGuidAsync(guid)); + + Assert.IsInstanceOfType(response, typeof(NotFoundResult)); + + if (response != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status404NotFound); + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task GetRoleByGuidAsync_ModelInvalid() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.Role? role = null; + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + _roleController.ModelState.AddModelError("Data", "Invalid data"); + ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid)); + + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Request is not well formed"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task GetRoleByGuidAsync_Exception() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = Guid.NewGuid().ToString(); + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ThrowsAsync(new Exception("Unexpected error")); + ObjectResult response = (ObjectResult)(await _roleController.GetRoleByGuidAsync(guid)); + + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status500InternalServerError); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status500InternalServerError); + Assert.IsTrue(result.Message == "Something went wrong. Unexpected error"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task CreateRoleAsync_Should_Return_200_When_Successful() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + if (_roleServiceMock == null) + { + Assert.Fail($"_roleServiceMock is null"); + } + + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + + CreateRoleRequest request = new CreateRoleRequest() + { + Data = new CreateRoleRequestData() + { + Name = "RoleTest", + IsNotEditable = true + } + }; + + _roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny(), It.IsAny())).ReturnsAsync(true); + _roleServiceMock?.Setup(s => s.CreateRoleAsync(request.Data)).ReturnsAsync(role); + + ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request)); + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status200OK); + Assert.IsInstanceOfType(result.Data, typeof(RoleDto)); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task CreateRoleAsync_InvalidName() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + CreateRoleRequest request = new CreateRoleRequest() + { + Data = new CreateRoleRequestData() + { + Name = "RoleTest", + IsNotEditable = true + } + }; + + _roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny(), It.IsAny())).ReturnsAsync(false); + + ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Invalid name"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task CreateRoleAsync_CreateRoleRequestDataNull() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + + CreateRoleRequest request = new CreateRoleRequest() + { + Data = null + }; + + _roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny(), It.IsAny())).ReturnsAsync(true); + + _roleServiceMock?.Setup(s => s.CreateRoleAsync( + It.IsAny() + )).ReturnsAsync(role); + + ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Request is not well formed"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task CreateRoleAsync_NotCreated() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + if (_roleServiceMock == null) + { + Assert.Fail($"_roleServiceMock is null"); + } + + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + DatabaseSqlServer.Role? expectedRole = null; + + CreateRoleRequest request = new CreateRoleRequest() + { + Data = new CreateRoleRequestData() + { + Name = "RoleTest", + IsNotEditable = true + } + }; + + _roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny(), It.IsAny())).ReturnsAsync(true); + _roleServiceMock?.Setup(s => s.CreateRoleAsync(request.Data)).ReturnsAsync(expectedRole); + + ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request)); + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Not created"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task CreateRoleAsync_ModelInvalid() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + + CreateRoleRequest request = new CreateRoleRequest() + { + Data = new CreateRoleRequestData() + { + Name = "RoleTest", + IsNotEditable = true + } + }; + + _roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny(), It.IsAny())).ReturnsAsync(true); + + _roleServiceMock?.Setup(s => s.CreateRoleAsync( + It.IsAny() + )).ReturnsAsync(role); + _roleController.ModelState.AddModelError("Data", "Invalid data"); + ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request)); + + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Request is not well formed"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task CreateRoleAsync_Exception() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + if (_roleServiceMock == null) + { + Assert.Fail($"_roleServiceMock is null"); + } + + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + + CreateRoleRequest request = new CreateRoleRequest() + { + Data = new CreateRoleRequestData() + { + Name = "RoleTest", + IsNotEditable = true + } + }; + + _roleServiceMock?.Setup(s => s.CheckIfNameIsValid(It.IsAny(), It.IsAny())).ReturnsAsync(true); + _roleServiceMock?.Setup(s => s.CreateRoleAsync( + It.IsAny() + )).ThrowsAsync(new Exception("Unexpected error")); + + ObjectResult response = (ObjectResult)(await _roleController.CreateRoleAsync(request)); + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status500InternalServerError); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status500InternalServerError); + Assert.IsTrue(result.Message == "Something went wrong. Unexpected error"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + + + [TestMethod] + public async Task DeleteRoleByGuidAsync_Success() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.Role role = ModelsInit.CreateRole(); + + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid)); + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status200OK); + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task DeleteRoleByGuidAsync_GuidIsEmpty() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = String.Empty; + DatabaseSqlServer.Role? role = null; + + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Request is not well formed"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response value is null"); + } + } + + [TestMethod] + public async Task DeleteRoleByGuidAsync_NotFound() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.Role? role = null; + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + NotFoundResult response = (NotFoundResult)(await _roleController.DeleteRoleByGuidAsync(guid)); + + Assert.IsInstanceOfType(response, typeof(NotFoundResult)); + + if (response != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status404NotFound); + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task DeleteRoleByGuidAsync_ModelInvalid() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = Guid.NewGuid().ToString(); + DatabaseSqlServer.Role? role = null; + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ReturnsAsync(role); + _roleController.ModelState.AddModelError("Data", "Invalid data"); + ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid)); + + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status400BadRequest); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status400BadRequest); + Assert.IsTrue(result.Message == "Request is not well formed"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + + [TestMethod] + public async Task DeleteRoleByGuidAsync_Exception() + { + if (_roleController == null) + { + Assert.Fail($"_roleController is null"); + } + + var guid = Guid.NewGuid().ToString(); + _roleServiceMock?.Setup(s => s.GetRoleByGuidAsync(It.IsAny())).ThrowsAsync(new Exception("Unexpected error")); + ObjectResult response = (ObjectResult)(await _roleController.DeleteRoleByGuidAsync(guid)); + + Assert.IsInstanceOfType(response, typeof(ObjectResult)); + + if (response != null && response.Value != null) + { + Assert.IsTrue(response.StatusCode == StatusCodes.Status500InternalServerError); + + var result = (BaseResponse)response.Value; + if (result != null) + { + Assert.IsTrue(result.Status == StatusCodes.Status500InternalServerError); + Assert.IsTrue(result.Message == "Something went wrong. Unexpected error"); + } + else + { + Assert.Fail($"Result value is null"); + } + } + else + { + Assert.Fail($"Response is null"); + } + } + +} diff --git a/MainProject.Tests/Controllers/UserController_Tests.cs b/MainProject.Tests/Controllers/UserController_Tests.cs index 4dfd820..5f35a07 100644 --- a/MainProject.Tests/Controllers/UserController_Tests.cs +++ b/MainProject.Tests/Controllers/UserController_Tests.cs @@ -31,7 +31,7 @@ using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; namespace BasicDotnetTemplate.MainProject.Tests; [TestClass] -public class UserControllerTests +public class UserController_Tests { private Mock? _userServiceMock; private Mock? _roleServiceMock; @@ -100,7 +100,7 @@ public class UserControllerTests } [TestMethod] - public async Task GetUserByGuidAsync_AuthenticateRequestDataNull() + public async Task GetUserByGuidAsync_GuidIsEmpty() { if (_userController == null) { diff --git a/MainProject/Controllers/RoleController.cs b/MainProject/Controllers/RoleController.cs new file mode 100644 index 0000000..9a21b99 --- /dev/null +++ b/MainProject/Controllers/RoleController.cs @@ -0,0 +1,162 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using BasicDotnetTemplate.MainProject.Core.Attributes; +using BasicDotnetTemplate.MainProject.Services; +using BasicDotnetTemplate.MainProject.Models.Api.Request.Role; +using BasicDotnetTemplate.MainProject.Models.Api.Response; +using BasicDotnetTemplate.MainProject.Models.Api.Response.Role; +using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; +using BasicDotnetTemplate.MainProject.Models.Api.Common.Role; + +namespace BasicDotnetTemplate.MainProject.Controllers +{ + [Route("[controller]")] + public class RoleController : BaseController + { + private readonly IRoleService _roleService; + public RoleController( + IConfiguration configuration, + IRoleService roleService + ) : base(configuration) + { + this._roleService = roleService; + } + + [JwtAuthorization()] + [HttpGet("get/{guid}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType>(StatusCodes.Status404NotFound)] + [ProducesResponseType>(StatusCodes.Status400BadRequest)] + [ProducesResponseType>(StatusCodes.Status500InternalServerError)] + public async Task GetRoleByGuidAsync(string guid) + { + try + { + if (!ModelState.IsValid) + { + return BadRequest(_requestNotWellFormed); + } + + if (String.IsNullOrEmpty(guid)) + { + return BadRequest(_requestNotWellFormed); + } + var role = await this._roleService.GetRoleByGuidAsync(guid); + + if (role == null || String.IsNullOrEmpty(role.Guid)) + { + return NotFound(); + } + + var roleDto = _mapper?.Map(role); + + return Success(String.Empty, roleDto); + } + catch (Exception exception) + { + var message = "Something went wrong"; + if (!String.IsNullOrEmpty(exception.Message)) + { + message += $". {exception.Message}"; + } + return InternalServerError(message); + } + + } + + [JwtAuthorization()] + [HttpPost("create")] + [ProducesResponseType(StatusCodes.Status201Created)] + [ProducesResponseType>(StatusCodes.Status400BadRequest)] + [ProducesResponseType>(StatusCodes.Status500InternalServerError)] + public async Task CreateRoleAsync([FromBody] CreateRoleRequest request) + { + try + { + if (!ModelState.IsValid) + { + return BadRequest(_requestNotWellFormed); + } + + if (request == null || request.Data == null || String.IsNullOrEmpty(request.Data.Name) + ) + { + return BadRequest(_requestNotWellFormed); + } + + if (await this._roleService.CheckIfNameIsValid(request.Data.Name)) + { + var role = await this._roleService.CreateRoleAsync(request.Data); + + if (role == null || String.IsNullOrEmpty(role.Guid)) + { + return BadRequest("Not created"); + } + + var roleDto = _mapper?.Map(role); + + return Success(String.Empty, roleDto); + } + else + { + return BadRequest("Invalid name"); + } + + } + catch (Exception exception) + { + var message = "Something went wrong"; + if (!String.IsNullOrEmpty(exception.Message)) + { + message += $". {exception.Message}"; + } + return InternalServerError(message); + } + + } + + [JwtAuthorization()] + [HttpDelete("{guid}")] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType>(StatusCodes.Status404NotFound)] + [ProducesResponseType>(StatusCodes.Status400BadRequest)] + [ProducesResponseType>(StatusCodes.Status500InternalServerError)] + public async Task DeleteRoleByGuidAsync(string guid) + { + try + { + if (!ModelState.IsValid) + { + return BadRequest(_requestNotWellFormed); + } + + if (String.IsNullOrEmpty(guid)) + { + return BadRequest(_requestNotWellFormed); + } + var role = await this._roleService.GetRoleByGuidAsync(guid); + + if (role == null || String.IsNullOrEmpty(role.Guid)) + { + return NotFound(); + } + + await this._roleService.DeleteRoleAsync(role); + + return Success(String.Empty); + } + catch (Exception exception) + { + var message = "Something went wrong"; + if (!String.IsNullOrEmpty(exception.Message)) + { + message += $". {exception.Message}"; + } + return InternalServerError(message); + } + + } + + + } +} \ No newline at end of file diff --git a/MainProject/Core/Middlewares/AutoMapperConfiguration.cs b/MainProject/Core/Middlewares/AutoMapperConfiguration.cs index bae74b0..6c0aa63 100644 --- a/MainProject/Core/Middlewares/AutoMapperConfiguration.cs +++ b/MainProject/Core/Middlewares/AutoMapperConfiguration.cs @@ -1,6 +1,7 @@ using BasicDotnetTemplate.MainProject.Models.Api.Common.User; using SqlServerDatabase = BasicDotnetTemplate.MainProject.Models.Database.SqlServer; using AutoMapper; +using BasicDotnetTemplate.MainProject.Models.Api.Common.Role; namespace BasicDotnetTemplate.MainProject.Core.Middlewares; @@ -8,6 +9,7 @@ public class AutoMapperConfiguration : Profile { public AutoMapperConfiguration() { + CreateMap(); CreateMap(); } diff --git a/MainProject/Models/Api/Common/Role/RoleDto.cs b/MainProject/Models/Api/Common/Role/RoleDto.cs new file mode 100644 index 0000000..a173f79 --- /dev/null +++ b/MainProject/Models/Api/Common/Role/RoleDto.cs @@ -0,0 +1,14 @@ +namespace BasicDotnetTemplate.MainProject.Models.Api.Common.Role; + +public class RoleDto +{ +#nullable enable + public string? Guid { get; set; } + public string? Name { get; set; } + public bool? IsNotEditable { get; set; } +#nullable disable +} + + + + diff --git a/MainProject/Models/Api/Request/Role/CreateRoleRequest.cs b/MainProject/Models/Api/Request/Role/CreateRoleRequest.cs new file mode 100644 index 0000000..d83636a --- /dev/null +++ b/MainProject/Models/Api/Request/Role/CreateRoleRequest.cs @@ -0,0 +1,10 @@ +using BasicDotnetTemplate.MainProject.Models.Api.Data.Role; + +namespace BasicDotnetTemplate.MainProject.Models.Api.Request.Role; + +public class CreateRoleRequest +{ +#nullable enable + public CreateRoleRequestData? Data { get; set; } +#nullable disable +} \ No newline at end of file diff --git a/MainProject/Models/Api/Response/Role/GetRoleResponse.cs b/MainProject/Models/Api/Response/Role/GetRoleResponse.cs new file mode 100644 index 0000000..957646c --- /dev/null +++ b/MainProject/Models/Api/Response/Role/GetRoleResponse.cs @@ -0,0 +1,8 @@ +using BasicDotnetTemplate.MainProject.Models.Api.Common.Role; + +namespace BasicDotnetTemplate.MainProject.Models.Api.Response.Role; + +public class GetRoleResponse : BaseResponse +{ + public GetRoleResponse(int status, string? message, RoleDto? data) : base(status, message, data) { } +} \ No newline at end of file