Added functionality to stop recreating tas of same name
This commit is contained in:
parent
871493bf61
commit
e76c203614
@ -36,7 +36,7 @@ namespace Marco.Pms.Services.Helpers
|
||||
|
||||
List<ContactBucketMapping>? contactBuckets = await _context.ContactBucketMappings.Where(cb => bucketIds.Contains(cb.BucketId)).ToListAsync();
|
||||
List<Guid> 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<object>.SuccessResponse(list, System.String.Format("{0} contacts fetched successfully", list.Count), 200);
|
||||
|
||||
}
|
||||
|
||||
public async Task<ApiResponse<object>> 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<object>.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400);
|
||||
}
|
||||
|
||||
public async Task<ApiResponse<object>> UpdateContact(Guid id, UpdateContactDto updateContact)
|
||||
{
|
||||
Guid tenantId = _userHelper.GetTenantId();
|
||||
@ -407,10 +406,12 @@ namespace Marco.Pms.Services.Helpers
|
||||
List<ContactTagMapping> contactTags = await _context.ContactTagMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync();
|
||||
var tagIds = contactTags.Select(t => t.ContactTagtId).Distinct().ToList();
|
||||
|
||||
|
||||
List<ContactProjectMapping> contactProjects = await _context.ContactProjectMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync();
|
||||
var projectIds = contactProjects.Select(t => t.ProjectId).Distinct().ToList();
|
||||
|
||||
List<ContactTagMaster> 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<object>.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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user