public async Task <IActionResult> getdata([FromQuery] contactParams contactParams)
        {
            var ContactData = await _repo.GetDataAsync(contactParams);

            Response.AddPagination(ContactData.CurrentPage, ContactData.PageSize, ContactData.TotalCount, ContactData.TotalPages);
            return(Ok(ContactData));
        }
        public async Task <IActionResult> GetAllFiltered([FromQuery] contactParams contactParams)
        {
            var contacts = await _repo.GetContactsfiltered(contactParams);

            var response = _mapper.Map <IEnumerable <ContactDTO> >(contacts);

            return(Ok(response));
        }
        public async Task <IActionResult> GetSingleFiltered([FromQuery] contactParams contactParams)
        {
            var contacts = await _repo.GetContactsfiltered(contactParams);

            var response = _mapper.Map <ContactDTO>(contacts.FirstOrDefault());

            return(Ok(response));
        }
        public async Task <PagedList <Contact> > GetDataAsync(contactParams contactParams)
        {
            var contactData = _context.Contact.Where(x => x.Moblie != null).OrderBy(x => x.emp_N).AsQueryable();;

            if (contactParams.searchTerm != "")
            {
                contactData = contactData.Where(x => x.emp_N.Contains(contactParams.searchTerm));
            }
            return(await PagedList <Contact> .CreateAsync(contactData, contactParams.PageNumber, contactParams.PageSize));
        }
        public async Task <IList <Contact> > GetContactsfiltered(contactParams contactParams)
        {
            var contacts = _context.Contacts.Include(c => c.PhoneNumbers)
                           .AsQueryable();

            if (!string.IsNullOrEmpty(contactParams.PhoneNumber))
            {
                contacts = (from c in contacts
                            join p in _context.PhoneNumbers on c.Id equals p.ContactId
                            where p.Number == contactParams.PhoneNumber
                            select c).Include(c => c.PhoneNumbers).AsQueryable();
            }

            if (!string.IsNullOrEmpty(contactParams.Email))
            {
                contacts = contacts.Where(c => c.Email == contactParams.Email);
            }


            if (!string.IsNullOrEmpty(contactParams.City))
            {
                contacts = contacts.Where(c => c.Address.City == contactParams.City);
            }

            if (!string.IsNullOrEmpty(contactParams.State))
            {
                contacts = contacts.Where(c => c.Address.State == contactParams.State);
            }

            if (!string.IsNullOrEmpty(contactParams.Firstname))
            {
                contacts = contacts.Where(c => c.Name.FirstName == contactParams.Firstname);
            }

            if (!string.IsNullOrEmpty(contactParams.Lastname))
            {
                contacts = contacts.Where(c => c.Name.LastName == contactParams.Lastname);
            }

            return(await contacts.ToListAsync());
        }