From e76c203614897b7cd1d9819c425fc885678ffea9 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Sat, 17 May 2025 13:31:35 +0530 Subject: [PATCH] Added functionality to stop recreating tas of same name --- Marco.Pms.Services/Helpers/DirectoryHelper.cs | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/Marco.Pms.Services/Helpers/DirectoryHelper.cs b/Marco.Pms.Services/Helpers/DirectoryHelper.cs index f1100c6..d866509 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -36,7 +36,7 @@ namespace Marco.Pms.Services.Helpers List? contactBuckets = await _context.ContactBucketMappings.Where(cb => bucketIds.Contains(cb.BucketId)).ToListAsync(); List contactIds = contactBuckets.Select(cb => cb.ContactId).ToList(); - var contacts = await _context.Contacts.Where(c => contactIds.Contains(c.Id) && c.TenantId == tenantId && c.IsActive).ToListAsync(); + var contacts = await _context.Contacts.Include(c => c.ContactCategory).Where(c => contactIds.Contains(c.Id) && c.TenantId == tenantId && c.IsActive).ToListAsync(); var phoneNo = await _context.ContactsPhones.Where(p => contactIds.Contains(p.ContactId)).ToListAsync(); @@ -118,7 +118,6 @@ namespace Marco.Pms.Services.Helpers return ApiResponse.SuccessResponse(list, System.String.Format("{0} contacts fetched successfully", list.Count), 200); } - public async Task> GetContactsListByBucketId(Guid id) { Guid tenantId = _userHelper.GetTenantId(); @@ -233,6 +232,7 @@ namespace Marco.Pms.Services.Helpers _logger.LogInfo("Contact with ID {ContactId} created by Employee with ID {LoggedInEmployeeId}", contact.Id, LoggedInEmployee.Id); var tags = await _context.ContactTagMasters.Where(t => t.TenantId == tenantId).ToListAsync(); + var tagNames = tags.Select(t => t.Name.ToLower()).ToList(); var buckets = await _context.Buckets.Where(b => b.TenantId == tenantId).Select(b => b.Id).ToListAsync(); var projects = await _context.Projects.Where(p => p.TenantId == tenantId).Select(p => p.Id).ToListAsync(); @@ -301,14 +301,14 @@ namespace Marco.Pms.Services.Helpers { foreach (var tag in createContact.Tags) { - if (tag.Id != null && tags.Where(t => t.Id == tag.Id) != null) + if (tagNames.Contains(tag.Name.ToLower())) { - ContactTagMapping tagMapping = new ContactTagMapping + ContactTagMaster existingTag = tags.Find(t => t.Name == tag.Name) ?? new ContactTagMaster(); + _context.ContactTagMappings.Add(new ContactTagMapping { - ContactTagtId = tag.Id != null ? tag.Id.Value : Guid.Empty, - ContactId = contact.Id - }; - contactTagMappings.Add(tagMapping); + ContactId = contact.Id, + ContactTagtId = tag.Id ?? existingTag.Id + }); } else if (tag.Id == null || tags.Where(t => t.Name == tag.Name) == null) { @@ -373,7 +373,6 @@ 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> UpdateContact(Guid id, UpdateContactDto updateContact) { Guid tenantId = _userHelper.GetTenantId(); @@ -407,10 +406,12 @@ namespace Marco.Pms.Services.Helpers List contactTags = await _context.ContactTagMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync(); var tagIds = contactTags.Select(t => t.ContactTagtId).Distinct().ToList(); + List contactProjects = await _context.ContactProjectMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync(); var projectIds = contactProjects.Select(t => t.ProjectId).Distinct().ToList(); List tags = await _context.ContactTagMasters.Where(t => tagIds.Contains(t.Id)).ToListAsync(); + var tagNames = tags.Select(t => t.Name.ToLower()).ToList(); if (updateContact.ContactPhones != null) { @@ -530,12 +531,13 @@ namespace Marco.Pms.Services.Helpers var updatedTagIds = updateContact.Tags.Select(t => t.Id).Distinct().ToList(); foreach (var tag in updateContact.Tags) { - if (tag.Id != null && !tagIds.Contains(tag.Id.Value)) + if (tagNames.Contains(tag.Name.ToLower())) { + ContactTagMaster existingTag = tags.Find(t => t.Name == tag.Name) ?? new ContactTagMaster(); _context.ContactTagMappings.Add(new ContactTagMapping { ContactId = contact.Id, - ContactTagtId = tag.Id.Value + ContactTagtId = tag.Id ?? existingTag.Id }); } else if (tag.Id == null || tag.Id == Guid.Empty) @@ -574,19 +576,7 @@ namespace Marco.Pms.Services.Helpers UpdateAt = DateTime.UtcNow }); - try - { - await _context.SaveChangesAsync(); - } - catch (DbUpdateException dbEx) - { - - return ApiResponse.ErrorResponse("User Send empty Payload", new - { - message = dbEx.Message, - innerexcption = dbEx.InnerException.Message - }, 400); - } + await _context.SaveChangesAsync(); contact = await _context.Contacts.Include(c => c.ContactCategory).FirstOrDefaultAsync(c => c.Id == id && c.IsActive && c.TenantId == tenantId) ?? new Contact(); phones = await _context.ContactsPhones.AsNoTracking().Where(p => p.ContactId == contact.Id).ToListAsync();