diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 1d7a9f3..6ad8690 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -610,6 +610,34 @@ namespace Marco.Pms.Services.Controllers return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); } + [HttpPost("work-category/edit")] + public async Task UpdateWorkCategoryMaster(WorkCategoryMasterDto workCategoryMasterDto) + { + var tenantId = _userHelper.GetTenantId(); + if (workCategoryMasterDto != null) + { + WorkCategoryMaster? workCategory = await _context.WorkCategoryMasters.AsNoTracking().FirstOrDefaultAsync(s => s.TenantId == tenantId && s.Id == workCategoryMasterDto.Id); + if (workCategory != null) + { + if (workCategory.IsSystem) + { + _logger.LogError("User tries to update system-defined work category"); + return BadRequest(ApiResponse.ErrorResponse("Cannot update system-defined work", "Cannot update system-defined work", 400)); + } + workCategory = workCategoryMasterDto.ToWorkCategoryMasterFromWorkCategoryMasterDto(tenantId); + _context.WorkCategoryMasters.Update(workCategory); + await _context.SaveChangesAsync(); + + WorkCategoryMasterVM workCategoryMasterVM = workCategory.ToWorkCategoryMasterVMFromWorkCategoryMaster(); + _logger.LogInfo("Work category master {WorkCategoryId} updated successfully from tenant {tenantId}", workCategory.Id, tenantId); + return Ok(ApiResponse.SuccessResponse(workCategoryMasterVM, "Work category master updated successfully", 200)); + } + _logger.LogError("Work category master {WorkCategoryId} not found in database", workCategoryMasterDto.Id ?? Guid.Empty); + return NotFound(ApiResponse.ErrorResponse("Work category master not found", "Work category master not found", 404)); + } + _logger.LogError("User sent empyt payload"); + return BadRequest(ApiResponse.ErrorResponse("User sent Empty payload", "User sent Empty payload", 400)); + } } }