From 6dbd968676205946510bbc84583d2f4bb3982a95 Mon Sep 17 00:00:00 2001 From: "ashutosh.nehete" Date: Thu, 22 May 2025 22:10:51 +0530 Subject: [PATCH] Accepting List of buckets and categories Ids rather than as payload --- .../Controllers/DirectoryController.cs | 13 ++++++++---- Marco.Pms.Services/Helpers/DirectoryHelper.cs | 20 +++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/Marco.Pms.Services/Controllers/DirectoryController.cs b/Marco.Pms.Services/Controllers/DirectoryController.cs index 2e6db54..ba05625 100644 --- a/Marco.Pms.Services/Controllers/DirectoryController.cs +++ b/Marco.Pms.Services/Controllers/DirectoryController.cs @@ -25,9 +25,14 @@ namespace Marco.Pms.Services.Controllers } [HttpGet] - public async Task GetContactList([FromQuery] string? search, [FromBody] ContactFilterDto? filterDto, [FromQuery] bool active = true) + public async Task GetContactList([FromQuery] string? search, [FromQuery] List? bucketIds, [FromQuery] List? categoryIds, [FromQuery] Guid? projectId, [FromQuery] bool active = true) { - var response = await _directoryHelper.GetListOfContacts(search, active, filterDto); + ContactFilterDto filterDto = new ContactFilterDto + { + BucketIds = bucketIds, + CategoryIds = categoryIds + }; + var response = await _directoryHelper.GetListOfContacts(search, active, filterDto, projectId); if (response.StatusCode == 200) @@ -164,9 +169,9 @@ namespace Marco.Pms.Services.Controllers } [HttpGet("note/{ContactId}")] - public async Task GetNoteListByContactId(Guid contactId) + public async Task GetNoteListByContactId(Guid contactId, [FromQuery] bool active = true) { - var response = await _directoryHelper.GetNoteListByContactId(contactId); + var response = await _directoryHelper.GetNoteListByContactId(contactId, active); if (response.StatusCode == 200) { return Ok(response); diff --git a/Marco.Pms.Services/Helpers/DirectoryHelper.cs b/Marco.Pms.Services/Helpers/DirectoryHelper.cs index cebba78..36c6884 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -29,20 +29,29 @@ namespace Marco.Pms.Services.Helpers - public async Task> GetListOfContacts(string? search, bool active, ContactFilterDto? filterDto) + public async Task> GetListOfContacts(string? search, bool active, ContactFilterDto? filterDto, Guid? projectId) { Guid tenantId = _userHelper.GetTenantId(); var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); List? employeeBuckets = await _context.EmployeeBucketMappings.Where(eb => eb.EmployeeId == LoggedInEmployee.Id).ToListAsync(); List bucketIds = employeeBuckets.Select(c => c.BucketId).ToList(); + List filterbucketIds = employeeBuckets.Select(c => c.BucketId).ToList(); if (filterDto != null && filterDto.BucketIds != null && filterDto.BucketIds.Count > 0) { - bucketIds = filterDto.BucketIds; + filterbucketIds = filterDto.BucketIds; } List? contactBuckets = await _context.ContactBucketMappings.Where(cb => bucketIds.Contains(cb.BucketId)).ToListAsync(); - List contactIds = contactBuckets.Select(cb => cb.ContactId).ToList(); + List contactIds = contactBuckets.Where(b => filterbucketIds.Contains(b.BucketId)).Select(cb => cb.ContactId).ToList(); List contacts = new List(); + var contactProjects = await _context.ContactProjectMappings.Where(p => contactIds.Contains(p.ContactId)).ToListAsync(); + + if (projectId != null && projectId != Guid.Empty) + { + contactProjects = contactProjects.Where(p => p.ProjectId == projectId).ToList(); + contactIds = contactProjects.Select(p => p.ContactId).Distinct().ToList(); + } + if (filterDto != null && filterDto.CategoryIds != null && filterDto.CategoryIds.Count > 0) { var categoryIds = filterDto.CategoryIds; @@ -56,7 +65,6 @@ namespace Marco.Pms.Services.Helpers var phoneNo = await _context.ContactsPhones.Where(p => contactIds.Contains(p.ContactId)).ToListAsync(); var Emails = await _context.ContactsEmails.Where(E => contactIds.Contains(E.ContactId)).ToListAsync(); var Tags = await _context.ContactTagMappings.Where(t => contactIds.Contains(t.ContactId)).ToListAsync(); - var contactProjects = await _context.ContactProjectMappings.Where(p => contactIds.Contains(p.ContactId)).ToListAsync(); List TagIds = Tags.Select(t => t.ContactTagId).ToList(); @@ -809,14 +817,14 @@ namespace Marco.Pms.Services.Helpers // -------------------------------- Contact Notes -------------------------------- - public async Task> GetNoteListByContactId(Guid id) + public async Task> GetNoteListByContactId(Guid id, bool active) { Guid tenantId = _userHelper.GetTenantId(); var LoggedInEmployee = await _userHelper.GetCurrentEmployeeAsync(); Contact? contact = await _context.Contacts.FirstOrDefaultAsync(c => c.Id == id && c.IsActive && c.TenantId == tenantId); if (contact != null) { - List? notes = await _context.ContactNotes.Where(n => n.ContactId == contact.Id && n.IsActive).ToListAsync(); + List? notes = await _context.ContactNotes.Where(n => n.ContactId == contact.Id && n.IsActive == active).ToListAsync(); List? noteVMs = new List(); foreach (var note in notes) {