Ashutosh_Enhancement#198_Added_IsSystem #39
@ -323,7 +323,35 @@ namespace MarcoBMS.Services.Controllers
|
||||
return Ok(ApiResponse<object>.SuccessResponse(vm, "Roles Perimssions fetched successfully.", 200));
|
||||
|
||||
}
|
||||
|
||||
[HttpDelete("{id}")]
|
||||
public async Task<IActionResult> DeleteApplicationRole(Guid id)
|
||||
{
|
||||
Guid tenantId = GetTenantId();
|
||||
var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var role = await _context.ApplicationRoles.AsNoTracking().FirstOrDefaultAsync(r => r.Id == id && r.TenantId == tenantId);
|
||||
if (role != null)
|
||||
{
|
||||
if (role.IsSystem)
|
||||
{
|
||||
_logger.LogInfo("Employee with ID {LoggedEmployeeId} tries to delete system-defined application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id);
|
||||
return BadRequest(ApiResponse<object>.ErrorResponse("This role cannot be deleted because it is system-defined.", "This role cannot be deleted because it is system-defined.", 400));
|
||||
}
|
||||
var employeeRoleMapping = await _context.EmployeeRoleMappings.Where(erm => erm.RoleId == role.Id).ToListAsync();
|
||||
if (employeeRoleMapping.Count != 0)
|
||||
{
|
||||
_logger.LogInfo("Employee with ID {LoggedEmployeeId} tries to delete application role with ID {ApplicationRoleId} with is assigned to an employee", LoggedEmployee.Id, role.Id);
|
||||
return BadRequest(ApiResponse<object>.ErrorResponse("This role cannot be deleted because it is currently assigned to employees.", "This role cannot be deleted because it is currently assigned to employees.", 400));
|
||||
}
|
||||
_context.ApplicationRoles.Remove(role);
|
||||
await _context.SaveChangesAsync();
|
||||
_logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogWarning("Application role with ID {ApplicationRoleId} not found in database", id);
|
||||
}
|
||||
return Ok(ApiResponse<object>.SuccessResponse(new { }, "Application role is deleted successfully", 200));
|
||||
}
|
||||
|
||||
|
||||
[HttpPost]
|
||||
|
Loading…
x
Reference in New Issue
Block a user