public IHttpActionResult SearchJob(JobFilteringViewModel jobFilteringVM, int pageNo)
        {
            if (!ModelState.IsValid)
            {
                return(Ok(new { Error = "Invalid ModelState" }));
            }

            try
            {
                int count = 0;
                var jobs  = jobService.SearchJobs(
                    jobFilteringVM,
                    Pagination.Size * pageNo,
                    Pagination.Size,
                    out count
                    );

                return(Ok(new { Success = jobs, Count = count }));
            }
            catch (Exception ex)
            {
                return(Ok(new { Error = ex.Message }));
            }
        }
Esempio n. 2
0
        public List <JobViewModel> SearchJobs(JobFilteringViewModel jobFilteringVM, int skip, int take, out int count)
        {
            var query = _db.Jobs.AsQueryable <Job>().AsQueryable();

            // filter by industry type
            if (!string.IsNullOrEmpty(jobFilteringVM.Industry))
            {
                query = (from j in query.Where(x => x.Industry.ToLower().Contains(jobFilteringVM.Industry.ToLower()))
                         select j).AsQueryable();
            }

            //filter by insolvency
            //if (jobFilteringVM.InsolvencyID > 0)
            //{
            //    query = (from j in query.Where(x => job.InsolvencyID == jobFilteringVM.InsolvencyID)
            //             select j).AsQueryable();
            //}


            // is full time job
            if (jobFilteringVM.IsFullTime)
            {
                query = (from j in query.Where(x => x.IsFullTime == true) select j).AsQueryable();
            }

            if (jobFilteringVM.IsPartTime)
            {
                query = (from j in query.Where(x => x.IsPartTime == true) select j).AsQueryable();
            }
            // is permanent job
            if (jobFilteringVM.IsPermanent)
            {
                query = (from j in query.Where(x => x.IsPermanent == true) select j).AsQueryable();
            }

            if (jobFilteringVM.IsTemporary)
            {
                query = (from j in query.Where(x => x.IsTemporary == true) select j).AsQueryable();
            }
            // is remote job
            if (jobFilteringVM.IsRemote)
            {
                query = (from j in query.Where(x => x.IsRemote == true) select j).AsQueryable();
            }

            if (jobFilteringVM.IsLocal)
            {
                query = (from j in query.Where(x => x.IsLocal == true) select j).AsQueryable();
            }


            //filter by locations
            if (jobFilteringVM.LocationList != null && jobFilteringVM.LocationList.Count > 0)
            {
                query = (from j in query.Where(x => jobFilteringVM.LocationList.Contains(x.LocationList[0])) select j).AsQueryable();
            }

            if (jobFilteringVM.SalaryFrom != 0 && jobFilteringVM.SalaryTo != 0)
            {
                query = (from j in query.Where(x =>
                                               (x.SalaryFrom >= jobFilteringVM.SalaryFrom && x.SalaryFrom < jobFilteringVM.SalaryTo) &&
                                               (x.SalaryTo <= jobFilteringVM.SalaryTo && x.SalaryTo > jobFilteringVM.SalaryFrom)
                                               )
                         select j).AsQueryable();
            }


            // experience and position
            if (jobFilteringVM.PositionList.Count > 0)
            {
                //List<string> posList = (from j in query select j.Position.ToLower()).ToList();


                // List<string> positionlist = jobFilteringVM.PositionList.ConvertAll(x => x.ToLower());

                //query = (from j in query.Where(x => positionlist.Contains(x.Position.ToLower())) select j).AsQueryable();

                query = (from j in query.Where(x => jobFilteringVM.PositionList.Contains(x.Position)) select j).AsQueryable();
                //query = (from j in query.Where(x => jobFilteringVM.PositionList.Contains(x.Position.ToLower())) select j).AsQueryable();
                //query = (from j in query.Where(x => jobFilteringVM.PositionList.ConvertAll(m => m.ToLower()).Contains(x.Position.ToLower())) select j).AsQueryable();
            }

            count = query.ToList().Count();

            var result = (from j in query.Skip(skip).Take(take)
                          select new JobViewModel
            {
                Industry = j.Industry,
                InsolvencyID = j.InsolvencyID,
                EmployerID = j.EmployerID,
                SalaryFrom = j.SalaryFrom,
                SalaryTo = j.SalaryTo,
                IsFullTime = j.IsFullTime,
                IsPermanent = j.IsPermanent,
                IsRemote = j.IsRemote,
                LocationList = j.LocationList,
                Description = j.Description,
                Position = j.Position,
                YearOfExperience = j.YearOfExperience,
                _id = j._id
            }
                          ).ToList();


            return(result);
        }