Added functionality to stop recreating tas of same name
This commit is contained in:
parent
895f22c62a
commit
1305742055
@ -36,7 +36,7 @@ namespace Marco.Pms.Services.Helpers
|
|||||||
|
|
||||||
List<ContactBucketMapping>? contactBuckets = await _context.ContactBucketMappings.Where(cb => bucketIds.Contains(cb.BucketId)).ToListAsync();
|
List<ContactBucketMapping>? contactBuckets = await _context.ContactBucketMappings.Where(cb => bucketIds.Contains(cb.BucketId)).ToListAsync();
|
||||||
List<Guid> contactIds = contactBuckets.Select(cb => cb.ContactId).ToList();
|
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();
|
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);
|
return ApiResponse<object>.SuccessResponse(list, System.String.Format("{0} contacts fetched successfully", list.Count), 200);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ApiResponse<object>> GetContactsListByBucketId(Guid id)
|
public async Task<ApiResponse<object>> GetContactsListByBucketId(Guid id)
|
||||||
{
|
{
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
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);
|
_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 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 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();
|
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)
|
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,
|
||||||
ContactId = contact.Id
|
ContactTagtId = tag.Id ?? existingTag.Id
|
||||||
};
|
});
|
||||||
contactTagMappings.Add(tagMapping);
|
|
||||||
}
|
}
|
||||||
else if (tag.Id == null || tags.Where(t => t.Name == tag.Name) == null)
|
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);
|
_logger.LogWarning("Employee with ID {LoggedInEmployeeId} sended empty payload", LoggedInEmployee.Id);
|
||||||
return ApiResponse<object>.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400);
|
return ApiResponse<object>.ErrorResponse("User Send empty Payload", "User Send empty Payload", 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ApiResponse<object>> UpdateContact(Guid id, UpdateContactDto updateContact)
|
public async Task<ApiResponse<object>> UpdateContact(Guid id, UpdateContactDto updateContact)
|
||||||
{
|
{
|
||||||
Guid tenantId = _userHelper.GetTenantId();
|
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();
|
List<ContactTagMapping> contactTags = await _context.ContactTagMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync();
|
||||||
var tagIds = contactTags.Select(t => t.ContactTagtId).Distinct().ToList();
|
var tagIds = contactTags.Select(t => t.ContactTagtId).Distinct().ToList();
|
||||||
|
|
||||||
|
|
||||||
List<ContactProjectMapping> contactProjects = await _context.ContactProjectMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync();
|
List<ContactProjectMapping> contactProjects = await _context.ContactProjectMappings.AsNoTracking().Where(m => m.ContactId == contact.Id).ToListAsync();
|
||||||
var projectIds = contactProjects.Select(t => t.ProjectId).Distinct().ToList();
|
var projectIds = contactProjects.Select(t => t.ProjectId).Distinct().ToList();
|
||||||
|
|
||||||
List<ContactTagMaster> tags = await _context.ContactTagMasters.Where(t => tagIds.Contains(t.Id)).ToListAsync();
|
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)
|
if (updateContact.ContactPhones != null)
|
||||||
{
|
{
|
||||||
@ -530,12 +531,13 @@ namespace Marco.Pms.Services.Helpers
|
|||||||
var updatedTagIds = updateContact.Tags.Select(t => t.Id).Distinct().ToList();
|
var updatedTagIds = updateContact.Tags.Select(t => t.Id).Distinct().ToList();
|
||||||
foreach (var tag in updateContact.Tags)
|
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
|
_context.ContactTagMappings.Add(new ContactTagMapping
|
||||||
{
|
{
|
||||||
ContactId = contact.Id,
|
ContactId = contact.Id,
|
||||||
ContactTagtId = tag.Id.Value
|
ContactTagtId = tag.Id ?? existingTag.Id
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (tag.Id == null || tag.Id == Guid.Empty)
|
else if (tag.Id == null || tag.Id == Guid.Empty)
|
||||||
@ -574,19 +576,7 @@ namespace Marco.Pms.Services.Helpers
|
|||||||
UpdateAt = DateTime.UtcNow
|
UpdateAt = DateTime.UtcNow
|
||||||
});
|
});
|
||||||
|
|
||||||
try
|
await _context.SaveChangesAsync();
|
||||||
{
|
|
||||||
await _context.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
catch (DbUpdateException dbEx)
|
|
||||||
{
|
|
||||||
|
|
||||||
return ApiResponse<object>.ErrorResponse("User Send empty Payload", new
|
|
||||||
{
|
|
||||||
message = dbEx.Message,
|
|
||||||
innerexcption = dbEx.InnerException.Message
|
|
||||||
}, 400);
|
|
||||||
}
|
|
||||||
|
|
||||||
contact = await _context.Contacts.Include(c => c.ContactCategory).FirstOrDefaultAsync(c => c.Id == id && c.IsActive && c.TenantId == tenantId) ?? new Contact();
|
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();
|
phones = await _context.ContactsPhones.AsNoTracking().Where(p => p.ContactId == contact.Id).ToListAsync();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user