public IHttpActionResult SearchCandidate(CandidateFilteringViewModel candidateFilteringVM)
        {
            if (!ModelState.IsValid)
            {
                return(Ok(new { Error = "Invalid ModelState" }));
            }

            try
            {
                var candidates = candidateService.SearchCandidates(candidateFilteringVM);
                return(Ok(new { Success = candidates }));
            }
            catch (Exception ex)
            {
                return(Ok(new { Error = ex.Message }));
            }
        }
        public List <CandidateViewModel> SearchCandidates(CandidateFilteringViewModel candidateFilteringVM)
        {
            var query = _db.Candidates.AsQueryable().AsQueryable();

            //List<IQueryable> queryList = new List<IQueryable>();

            if (!String.IsNullOrEmpty(candidateFilteringVM.Profile.Trim()))
            {
                query = (from c in query.Where(x => x.Profile.ToLower().Contains(candidateFilteringVM.Profile.ToLower())) select c).AsQueryable();
            }

            //if (candidateFilteringVM.PositionList != null && candidateFilteringVM.PositionList.Count() > 0)
            //{
            //    foreach (string position in candidateFilteringVM.PositionList)
            //    {
            //        query = (from c in query.Where(x => x.Position.ToLower().Contains(position.ToLower())) select c).AsQueryable();
            //    }

            //}

            //query = (from c in query.Where(x => x.IsFullTime == candidateFilteringVM.IsFullTime) select c).AsQueryable();

            //query = (from c in query.Where(x => x.IsPermanent == candidateFilteringVM.IsPermanent) select c).AsQueryable();

            //if (!candidateFilteringVM.isVideoProfileSearch)
            //{
            //    query = (from c in query.Where(x => x.IsPartTime == candidateFilteringVM.IsPartTime) select c).AsQueryable();

            //    query = (from c in query.Where(x => x.IsTemporary == candidateFilteringVM.IsTemporary) select c).AsQueryable();

            //    query = (from c in query.Where(x => x.IsRemote == candidateFilteringVM.IsRemote) select c).AsQueryable();

            //    query = (from c in query.Where(x => x.IsLocum == candidateFilteringVM.IsLocum) select c).AsQueryable();


            //    if (candidateFilteringVM.ExpectedSalaryFrom != 0 && candidateFilteringVM.ExpectedSalaryTo != 0)
            //    {
            //        query = (from c in query.Where(x =>
            //            (x.ExpectedSalaryFrom >= candidateFilteringVM.ExpectedSalaryFrom && x.ExpectedSalaryFrom < candidateFilteringVM.ExpectedSalaryTo)
            //            && (x.ExpectedSalaryTo <= candidateFilteringVM.ExpectedSalaryTo && x.ExpectedSalaryTo > candidateFilteringVM.ExpectedSalaryFrom)
            //            )
            //                 select c).AsQueryable();
            //    }
            //}
            // by location
            if (candidateFilteringVM.LocationList != null && candidateFilteringVM.LocationList.Count() > 0)
            {
                //foreach (string location in candidateFilteringVM.LocationList)
                //{
                //    query = (from c in query.Where(x => x.Location.ToLower().Contains(location.ToLower())) select c).AsQueryable();
                //}
                query = (from c in query.Where(x => candidateFilteringVM.LocationList.Contains(x.Location)) select c).AsQueryable();
            }

            //if (candidateFilteringVM.Skills != null && candidateFilteringVM.Skills.Count() > 0)
            //{
            //    foreach (string skill in candidateFilteringVM.Skills)
            //    {
            //        query = (from c in query.Where(x => x.Skills.Contains(skill)) select c).AsQueryable();
            //    }

            //}


            var result = (from c in query
                          select new CandidateViewModel
            {
                _id = c._id,
                CandidateName = c.CandidateName,
                VideoUrl = c.DocumentList[1].Guid,
                ImageUrl = c.ImageUrl,
                Objectives = c.Objectives,
                Profile = c.Profile,
                Position = c.Position,
                Location = c.Location,
                Experince = c.Experince,
                CurrentSalary = c.CurrentSalary,
                ExpectedSalaryFrom = c.ExpectedSalaryFrom,
                ExpectedSalaryTo = c.ExpectedSalaryTo,
                IsFullTime = c.IsFullTime,
                IsPermanent = c.IsPermanent,
                IsPartTime = c.IsPartTime,
                IsTemporary = c.IsTemporary,
                IsRemote = c.IsRemote,
                IsLocum = c.IsLocum,
                Skills = c.Skills,
                MobileNo = c.MobileNo,
                Email = c.Email,
                Sex = c.Sex,
                DocumentList = c.DocumentList,
            }).ToList();

            return(result);
        }