Added an API to delete job role if that job role is not asigned to any employee
This commit is contained in:
parent
3da4a09a6d
commit
8bdf4b75a4
@ -101,7 +101,30 @@ namespace MarcoBMS.Services.Controllers
|
||||
return BadRequest(ApiResponse<object>.ErrorResponse(ex.Message, ex, 400));
|
||||
}
|
||||
}
|
||||
|
||||
[HttpDelete("jobrole/{id}")]
|
||||
public async Task<IActionResult> DeleteJobRole(Guid id)
|
||||
{
|
||||
Guid tenantId = GetTenantId();
|
||||
var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync();
|
||||
var jobRole = await _context.JobRoles.FirstOrDefaultAsync(r => r.Id == id && r.TenantId == tenantId);
|
||||
if (jobRole != null)
|
||||
{
|
||||
var employee = await _context.Employees.Where(e => e.JobRoleId == jobRole.Id).ToListAsync();
|
||||
if (employee.Any())
|
||||
{
|
||||
_logger.LogWarning("Employee with ID {LoggedEmployeeId} tries to delete the job role with ID {JobRoleId} which is assigned to one or more employees", LoggedEmployee.Id, jobRole.Id);
|
||||
return BadRequest(ApiResponse<object>.ErrorResponse("Cannot delete the job role because it is assigned to one or more employees.", "Cannot delete the job role because it is assigned to one or more employees.", 400));
|
||||
}
|
||||
_context.JobRoles.Remove(jobRole);
|
||||
await _context.SaveChangesAsync();
|
||||
_logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted the job role with ID {JobRoleId}", LoggedEmployee.Id, jobRole.Id);
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogWarning("Job role with ID {JobRoleId} not found in database", id);
|
||||
}
|
||||
return Ok(ApiResponse<object>.SuccessResponse(new { }, "Job role deleted successfully", 200));
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> GetAllRoles()
|
||||
@ -343,6 +366,12 @@ namespace MarcoBMS.Services.Controllers
|
||||
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);
|
||||
var rolePermissionMapping = await _context.RolePermissionMappings.Where(r => r.ApplicationRoleId == role.Id).ToListAsync();
|
||||
if (rolePermissionMapping.Count != 0)
|
||||
{
|
||||
_context.RolePermissionMappings.RemoveRange(rolePermissionMapping);
|
||||
_logger.LogInfo("All permissions assigned to the application role with ID {ApplicationRoleId} have been removed.", role.Id);
|
||||
}
|
||||
await _context.SaveChangesAsync();
|
||||
_logger.LogInfo("Employee with ID {LoggedEmployeeId} deleted application role with ID {ApplicationRoleId}", LoggedEmployee.Id, role.Id);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user