Added an API to delete job role if that job role is not asigned to any employee

This commit is contained in:
ashutosh.nehete 2025-05-08 15:23:35 +05:30
parent 3da4a09a6d
commit 8bdf4b75a4

View File

@ -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);
}