From 9af085c2fd4d7c6a3462c984bd560b4810113082 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 17 May 2025 14:33:14 +0530 Subject: [PATCH] Added an API to deleted ContactTag as well remove entries in contact-tag mapping table related to that tag --- .../Controllers/MasterController.cs | 7 ++--- Marco.Pms.Services/Helpers/MasterHelper.cs | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index e782913..1ba1ee9 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -680,7 +680,7 @@ namespace Marco.Pms.Services.Controllers return Ok(response); } - [HttpGet("contact-category/{id})")] + [HttpGet("contact-category/{id}")] public async Task GetContactCategoryMaster(Guid id) { return Ok(); @@ -726,7 +726,7 @@ namespace Marco.Pms.Services.Controllers return Ok(response); } - [HttpGet("contact-tag/{id})")] + [HttpGet("contact-tag/{id}")] public async Task GetContactTagMaster(Guid id) { return Ok(); @@ -768,7 +768,8 @@ namespace Marco.Pms.Services.Controllers [HttpDelete("contact-tag/{id}")] public async Task DeletecontactTagMaster(Guid id) { - return Ok(); + var response = await _masterHelper.DeleteContactTag(id); + return Ok(response); } } } diff --git a/Marco.Pms.Services/Helpers/MasterHelper.cs b/Marco.Pms.Services/Helpers/MasterHelper.cs index 33fab6b..ac05b97 100644 --- a/Marco.Pms.Services/Helpers/MasterHelper.cs +++ b/Marco.Pms.Services/Helpers/MasterHelper.cs @@ -139,7 +139,33 @@ 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> DeleteContactTag(Guid id) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + ContactTagMaster? contactTag = await _context.ContactTagMasters.FirstOrDefaultAsync(c => c.Id == id && c.TenantId == tenantId); + if (contactTag != null) + { + List? tagMappings = await _context.ContactTagMappings.Where(t => t.ContactTagtId == contactTag.Id).ToListAsync(); + _context.ContactTagMasters.Remove(contactTag); + if (tagMappings.Any()) + { + _context.ContactTagMappings.RemoveRange(tagMappings); + } + _context.DirectoryUpdateLogs.Add(new DirectoryUpdateLog + { + RefereanceId = id, + UpdatedById = LoggedInEmployee.Id, + UpdateAt = DateTime.UtcNow + }); + await _context.SaveChangesAsync(); + _logger.LogInfo("Employee {EmployeeId} deleted contact tag {ContactTagId}", LoggedInEmployee.Id, id); + } + + _logger.LogWarning("Employee {EmployeeId} tries to delete Tag {ContactTagId} but not found in database", LoggedInEmployee.Id, id); + return ApiResponse.SuccessResponse(new { }, "Tag deleted successfully", 200); + } } }