public async Task <List <OutPut_ContactDto> > GetContactList(ContactSelectDto selectmodel)
        {
            var templist = from contact in dbContext.Contacts
                           join phones in dbContext.ContactPhoneNumbers on contact.Id equals phones.ContactId
                           where (
                (string.IsNullOrEmpty(selectmodel.FullName) || ((contact.FirstName + " " + contact.LastName).Contains(selectmodel.FullName))) &&
                (string.IsNullOrEmpty(selectmodel.PhoneNumber) || (phones.PhoneNumber.Contains(selectmodel.PhoneNumber)))
                )
                           group contact by contact.Id into ids
                           select ids.Key;
            var ides = templist.ToList();

            var Query = dbContext.Contacts.Where(x => ides.Contains(x.Id))
                        .Select(x => new OutPut_ContactDto()
            {
                Id           = x.Id,
                FirstName    = x.FirstName,
                LastName     = x.LastName,
                BirthDate    = x.BirthDate,
                CompanyName  = x.CompanyName,
                WebSite      = x.WebSite,
                Address      = x.Address,
                EmailAddress = x.EmailAddress,
                Groups       = dbContext.ContactGroups.Include(y => y.Group)
                               .Where(y => y.ContactId == x.Id)
                               .Select(y => new OutPut_GroupDto()
                {
                    Id        = y.Id,
                    GroupName = y.Group.GroupName
                }).ToList(),
                ContactPhoneNumbers = dbContext.ContactPhoneNumbers.Include(y => y.PhoneNymberType)
                                      .Where(y => y.ContactId == x.Id)
                                      .Select(y => new OutPut_ContactPhoneNumbersDto()
                {
                    Id = y.Id,
                    PhoneNumberTypeName = y.PhoneNymberType.PhoneNymberTypeName,
                    PhoneNumber         = y.PhoneNumber,
                    PhoneNumberTypeId   = y.PhoneNumberTypeId
                }).ToList()
            })
                        .AsNoTracking();

            if (selectmodel.ShowPagingView)
            {
                var lst = await Query.Skip(selectmodel.Page *selectmodel.PageSize)
                          .Take(selectmodel.PageSize)
                          .ToListAsync();

                return(lst);
            }
            else
            {
                var lst = await Query.ToListAsync();

                return(lst);
            }
            // return new List<OutPut_ContactDto>();
        }
예제 #2
0
        public async Task <IActionResult> SearchContact([FromQuery] ContactSelectDto searchitems)
        {
            searchitems.Page--;
            var resultlist = await contactService.SearchContact(searchitems);

            var Result = new BaseSelectOutPutDto <OutPut_ContactDto>()
            {
                IsSuccess  = true,
                ResultList = resultlist
            };

            return(Ok(Result));
        }
 public async Task <List <OutPut_ContactDto> > SearchContact(ContactSelectDto selectmodel)
 {
     return(await contactRepository.GetContactList(selectmodel));
 }