diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 6ad8690..f3e5c4e 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -639,5 +639,33 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } + [HttpDelete("work-category/{id}")] + public async Task DeleteWorkCategoryMaster(Guid id) + { + var tenantId = _userHelper.GetTenantId(); + var LoggedEmployee = await _userHelper.GetCurrentEmployeeAsync(); + WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.FirstOrDefaultAsync(t => t.TenantId == tenantId && t.Id == id); + if (workCategory != null) + { + if (workCategory.IsSystem == false) + { + _context.WorkCategoryMasters.Remove(workCategory); + await _context.SaveChangesAsync(); + + _logger.LogInfo("Work category {WorkCategoryId} deleted successfully from tenant {tenantId}", id, tenantId); + return Ok(ApiResponse.SuccessResponse(new { }, "Work category deleted successfully", 200)); + } + else + { + _logger.LogWarning("Employee with {LoggedEmployeeId} tries to delete system-defined work category {WorkCategoryId}", LoggedEmployee.Id, id); + return BadRequest(ApiResponse.ErrorResponse("Can not delete system-defined work category", "Can not delete system-defined work category", 400)); + } + } + else + { + _logger.LogError("Work category {WorkCategoryId} not found in database", id); + return NotFound(ApiResponse.ErrorResponse("Work category not found", "Work category not found", 404)); + } + } } }