diff --git a/Marco.Pms.Model/Mapper/DirectoryMapper.cs b/Marco.Pms.Model/Mapper/DirectoryMapper.cs index abf72d3..fbe0e46 100644 --- a/Marco.Pms.Model/Mapper/DirectoryMapper.cs +++ b/Marco.Pms.Model/Mapper/DirectoryMapper.cs @@ -46,7 +46,7 @@ namespace Marco.Pms.Model.Mapper Id = contact.Id, ProjectId = contact.ProjectId, Name = contact.Name, - ContactType = contact.ContactCategory != null ? contact.ContactCategory.ToContactCategoryVMFromContactCategoryMaster() : new ContactCategoryVM(), + ContactCategory = contact.ContactCategory != null ? contact.ContactCategory.ToContactCategoryVMFromContactCategoryMaster() : new ContactCategoryVM(), Description = contact.Description ?? string.Empty, Organization = contact.Organization ?? string.Empty, Address = contact.Address ?? string.Empty diff --git a/Marco.Pms.Model/ViewModels/Directory/ContactVM.cs b/Marco.Pms.Model/ViewModels/Directory/ContactVM.cs index 6d6f82e..b1abb3b 100644 --- a/Marco.Pms.Model/ViewModels/Directory/ContactVM.cs +++ b/Marco.Pms.Model/ViewModels/Directory/ContactVM.cs @@ -9,7 +9,7 @@ namespace Marco.Pms.Model.ViewModels.Directory public string? Name { get; set; } public List? ContactPhones { get; set; } public List? ContactEmails { get; set; } - public ContactCategoryVM? ContactType { get; set; } + public ContactCategoryVM? ContactCategory { get; set; } public string? Description { get; set; } public string? Organization { get; set; } public string? Address { get; set; } diff --git a/Marco.Pms.Services/Controllers/DirectoryController.cs b/Marco.Pms.Services/Controllers/DirectoryController.cs index a2f984c..efa76c3 100644 --- a/Marco.Pms.Services/Controllers/DirectoryController.cs +++ b/Marco.Pms.Services/Controllers/DirectoryController.cs @@ -25,7 +25,18 @@ namespace Marco.Pms.Services.Controllers [HttpGet] public async Task GetContactList() { - return Ok(); + var response = await _directoryHelper.GetListOfContacts(); + + + if(response.StatusCode == 200) + { + return Ok(response); + } + else + { + return BadRequest(response); + } + } [HttpPost] diff --git a/Marco.Pms.Services/Helpers/DirectoryHelper.cs b/Marco.Pms.Services/Helpers/DirectoryHelper.cs index 832d190..5e11587 100644 --- a/Marco.Pms.Services/Helpers/DirectoryHelper.cs +++ b/Marco.Pms.Services/Helpers/DirectoryHelper.cs @@ -1,6 +1,12 @@ using Marco.Pms.DataAccess.Data; +using Marco.Pms.Model.Directory; +using Marco.Pms.Model.Mapper; +using Marco.Pms.Model.Utilities; +using Marco.Pms.Model.ViewModels.Directory; +using Marco.Pms.Model.ViewModels.Master; using MarcoBMS.Services.Helpers; using MarcoBMS.Services.Service; +using Microsoft.EntityFrameworkCore; namespace Marco.Pms.Services.Helpers { @@ -17,5 +23,89 @@ namespace Marco.Pms.Services.Helpers _logger = logger; _userHelper = userHelper; } + + + + public async Task> GetListOfContacts() + { + Guid tenantId = _userHelper.GetTenantId(); + + var contacts = await _context.Contacts.Where(c => c.TenantId == tenantId).ToListAsync(); + + List contactIds = contacts.Select(c=>c.Id).ToList(); + + 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(); + + + List TagIds = Tags.Select(t=>t.ContactTagtId).ToList(); + + var TagList = await _context.ContactTagMasters.Where(t=> TagIds.Contains(t.Id)).ToListAsync(); + + List list = new List(); + + foreach (var contact in contacts) + { + + ContactVM contactVM = new ContactVM(); + List contactEmailVms = new List(); + List contactPhoneVms = new List(); + + List conatctTagVms = new List(); + var phones = phoneNo.Where(p => p.ContactId == contact.Id).ToList(); + var emails = Emails.Where(e => e.ContactId == contact.Id).ToList(); + var tagMappingss = Tags.Where(t => t.ContactId == contact.Id).ToList(); + + + if(emails != null) + { + foreach (var email in emails) + { + ContactEmailVM emailVM = new ContactEmailVM(); + emailVM = email.ToContactEmailVMFromContactEmail(); + contactEmailVms.Add(emailVM); + } + } + + if(phones != null) + { + foreach (var phone in phones) + { + ContactPhoneVM phoneVM = new ContactPhoneVM(); + phoneVM = phone.ToContactPhoneVMFromContactPhone(); + contactPhoneVms.Add(phoneVM); + } + + } + + if (tagMappingss != null) { + foreach (var tagMapping in tagMappingss) + { + ContactTagVM tagVM = new ContactTagVM(); ; + var tag = TagList.Find(t => t.Id == tagMapping.ContactTagtId); + + tagVM = tag.ToContactTagVMFromContactTagMaster(); + conatctTagVms.Add(tagVM); + + + } + } + + + contactVM = contact.ToContactVMFromContact(); + + contactVM.ContactEmails = contactEmailVms; + contactVM.ContactPhones = contactPhoneVms; + contactVM.Tags = conatctTagVms; + + list.Add(contactVM); + } + + return ApiResponse.SuccessResponse(list, "Contact List !",200); + + } } -} + }