From 2a0adc75c4268cd833fa809d7803f9d2c469058c Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 22 May 2025 20:27:13 +0530 Subject: [PATCH] Implemented an API to update Contact Category Master --- .../Controllers/MasterController.cs | 55 +++++++--------- Marco.Pms.Services/Helpers/MasterHelper.cs | 65 +++++++++++++++++++ 2 files changed, 89 insertions(+), 31 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index dc4cd61..3512081 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -1,8 +1,6 @@ using Marco.Pms.DataAccess.Data; -using Marco.Pms.Model.Directory; using Marco.Pms.Model.Dtos.Activities; using Marco.Pms.Model.Dtos.Master; -using Marco.Pms.Model.Employees; using Marco.Pms.Model.Entitlements; using Marco.Pms.Model.Forum; using Marco.Pms.Model.Mapper; @@ -717,11 +715,22 @@ namespace Marco.Pms.Services.Controllers return BadRequest(response); } } - [HttpPost("contact-category/edit/{id}")] public async Task UpdateContactCategoryMaster(Guid id, [FromBody] UpdateContactCategoryDto updateContactCategoryDto) { - return Ok(); + var response = await _masterHelper.UpdateContactCategory(id, updateContactCategoryDto); + if (response.StatusCode == 200) + { + return Ok(response); + } + else if (response.StatusCode == 404) + { + return NotFound(response); + } + else + { + return BadRequest(response); + } } [HttpDelete("contact-category/{id}")] @@ -776,36 +785,20 @@ namespace Marco.Pms.Services.Controllers [HttpPost("contact-tag/edit/{id}")] public async Task UpdateContactTagMaster(Guid id, [FromBody] UpdateContactTagDto updateContactTagDto) { - - var tenantId = _userHelper.GetTenantId(); - Employee LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); - if (updateContactTagDto != null && updateContactTagDto.Id != id) + var response = await _masterHelper.UpdateContactTag(id, updateContactTagDto); + if (response.StatusCode == 200) { - ContactTagMaster? contactTag = await _context.ContactTagMasters.AsNoTracking().FirstOrDefaultAsync(t => t.TenantId == tenantId && t.Id == updateContactTagDto.Id); - if (contactTag != null) - { - contactTag = updateContactTagDto.ToContactTagMasterFromUpdateContactTagDto(tenantId); - _context.ContactTagMasters.Update(contactTag); - - _context.DirectoryUpdateLogs.Add(new DirectoryUpdateLog - { - RefereanceId = contactTag.Id, - UpdatedById = LoggedInEmployee.Id, - UpdateAt = DateTime.UtcNow - }); - await _context.SaveChangesAsync(); - - ContactTagVM contactTagVm = contactTag.ToContactTagVMFromContactTagMaster(); - - - - _logger.LogInfo("Work category master {ConatctTagId} updated successfully from tenant {tenantId}", contactTagVm.Id, tenantId); - return Ok(ApiResponse.SuccessResponse(contactTagVm, "Contact Tag master updated successfully", 200)); - } + return Ok(response); } - _logger.LogError("Contact Tag master {ContactTagId} not found in database", id); - return NotFound(ApiResponse.ErrorResponse("Contact Tag master not found", "Work category master not found", 404)); + else if (response.StatusCode == 404) + { + return NotFound(response); + } + else + { + return BadRequest(response); + } } [HttpDelete("contact-tag/{id}")] diff --git a/Marco.Pms.Services/Helpers/MasterHelper.cs b/Marco.Pms.Services/Helpers/MasterHelper.cs index 4d29908..55883f6 100644 --- a/Marco.Pms.Services/Helpers/MasterHelper.cs +++ b/Marco.Pms.Services/Helpers/MasterHelper.cs @@ -1,6 +1,7 @@ using Marco.Pms.DataAccess.Data; using Marco.Pms.Model.Directory; using Marco.Pms.Model.Dtos.Master; +using Marco.Pms.Model.Employees; using Marco.Pms.Model.Mapper; using Marco.Pms.Model.Utilities; using Marco.Pms.Model.ViewModels.Master; @@ -47,6 +48,37 @@ namespace Marco.Pms.Services.Helpers _logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id); return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); } + public async Task> UpdateContactCategory(Guid id, UpdateContactCategoryDto contactCategoryDto) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + if (contactCategoryDto != null && id == contactCategoryDto.Id) + { + ContactCategoryMaster? contactCategory = await _context.ContactCategoryMasters.FirstOrDefaultAsync(c => c.TenantId == tenantId && c.Id == id); + if (contactCategory != null) + { + contactCategory.Name = contactCategoryDto.Name ?? ""; + contactCategory.Description = contactCategoryDto.Description ?? ""; + + _context.DirectoryUpdateLogs.Add(new DirectoryUpdateLog + { + RefereanceId = contactCategory.Id, + UpdatedById = LoggedInEmployee.Id, + UpdateAt = DateTime.UtcNow + }); + + await _context.SaveChangesAsync(); + ContactCategoryVM categoryVM = contactCategory.ToContactCategoryVMFromContactCategoryMaster(); + + _logger.LogInfo("Employee ID {LoggedInEmployeeId} created a contact category {ContactCategoryId}.", LoggedInEmployee.Id, contactCategory.Id); + return ApiResponse.SuccessResponse(categoryVM, "Category Created Successfully", 200); + } + _logger.LogWarning("Employee ID {LoggedInEmployeeId} attempted to update a contact category but not found in database.", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("Category not found", "Category not found", 404); + } + _logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); + } public async Task> GetContactCategoriesList() { Guid tenantId = _userHelper.GetTenantId(); @@ -154,6 +186,39 @@ namespace Marco.Pms.Services.Helpers _logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id); return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); } + public async Task> UpdateContactTag(Guid id, UpdateContactTagDto contactTagDto) + { + var tenantId = _userHelper.GetTenantId(); + Employee LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + if (contactTagDto != null && contactTagDto.Id != id) + { + ContactTagMaster? contactTag = await _context.ContactTagMasters.AsNoTracking().FirstOrDefaultAsync(t => t.TenantId == tenantId && t.Id == contactTagDto.Id); + if (contactTag != null) + { + contactTag = contactTagDto.ToContactTagMasterFromUpdateContactTagDto(tenantId); + _context.ContactTagMasters.Update(contactTag); + + _context.DirectoryUpdateLogs.Add(new DirectoryUpdateLog + { + RefereanceId = contactTag.Id, + UpdatedById = LoggedInEmployee.Id, + UpdateAt = DateTime.UtcNow + }); + await _context.SaveChangesAsync(); + + ContactTagVM contactTagVm = contactTag.ToContactTagVMFromContactTagMaster(); + + + + _logger.LogInfo("Work category master {ConatctTagId} updated successfully by employee {EmployeeId}", contactTagVm.Id, LoggedInEmployee.Id); + ApiResponse.SuccessResponse(contactTagVm, "Contact Tag master updated successfully", 200); + } + _logger.LogError("Contact Tag master {ContactTagId} not found in database", id); + ApiResponse.ErrorResponse("Contact Tag master not found", "Contact tag master not found", 404); + } + _logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id); + return ApiResponse.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400); + } public async Task> DeleteContactTag(Guid id) { Guid tenantId = _userHelper.GetTenantId();