From 9f543d18599ee3c1cf2034e45c7380e55e7cdf27 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 17 May 2025 12:15:23 +0530 Subject: [PATCH] Added an API to delete existing contact category --- .../Controllers/MasterController.cs | 3 +- Marco.Pms.Services/Helpers/MasterHelper.cs | 33 +++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Marco.Pms.Services/Controllers/MasterController.cs b/Marco.Pms.Services/Controllers/MasterController.cs index 8e4a86f..e782913 100644 --- a/Marco.Pms.Services/Controllers/MasterController.cs +++ b/Marco.Pms.Services/Controllers/MasterController.cs @@ -713,7 +713,8 @@ namespace Marco.Pms.Services.Controllers [HttpDelete("contact-category/{id}")] public async Task DeletecontactCategoryMaster(Guid id) { - return Ok(); + var response = await _masterHelper.DeleteContactCategory(id); + return Ok(response); } // -------------------------------- Contact Tag -------------------------------- diff --git a/Marco.Pms.Services/Helpers/MasterHelper.cs b/Marco.Pms.Services/Helpers/MasterHelper.cs index 66d3b45..33fab6b 100644 --- a/Marco.Pms.Services/Helpers/MasterHelper.cs +++ b/Marco.Pms.Services/Helpers/MasterHelper.cs @@ -63,6 +63,39 @@ namespace Marco.Pms.Services.Helpers _logger.LogInfo("{count} contact categoires are fetched by Employee with ID {LoggedInEmployeeId}", contactCategories.Count, LoggedInEmployee.Id); return ApiResponse.SuccessResponse(contactCategories, System.String.Format("{0} contact categories fetched successfully", contactCategories.Count), 200); } + public async Task> DeleteContactCategory(Guid id) + { + Guid tenantId = _userHelper.GetTenantId(); + var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); + ContactCategoryMaster? contactCategory = await _context.ContactCategoryMasters.FirstOrDefaultAsync(c => c.Id == id && c.TenantId == tenantId); + if (contactCategory != null) + { + List? existingContacts = await _context.Contacts.AsNoTracking().Where(c => c.ContactCategoryId == contactCategory.Id).ToListAsync(); + if (existingContacts.Count > 0) + { + List? contacts = new List(); + foreach (var contact in existingContacts) + { + contact.ContactCategoryId = null; + contacts.Add(contact); + } + _context.Contacts.UpdateRange(contacts); + } + _context.ContactCategoryMasters.Remove(contactCategory); + + _context.DirectoryUpdateLogs.Add(new DirectoryUpdateLog + { + RefereanceId = id, + UpdatedById = LoggedInEmployee.Id, + UpdateAt = DateTime.UtcNow + }); + await _context.SaveChangesAsync(); + _logger.LogInfo("Employee {EmployeeId} deleted contact category {ContactCategoryId}", LoggedInEmployee.Id, id); + } + + _logger.LogWarning("Employee {EmployeeId} tries to delete Category {CategoryId} but not found in database", LoggedInEmployee.Id, id); + return ApiResponse.SuccessResponse(new { }, "Category deleted successfully", 200); + } // -------------------------------- Contact Tag --------------------------------