public JsonResult GetJobList(JobFilterArgument filterArgs)
        {
            try
            {
                var userId = (int)Security.Helpers.SessionHelpers.LOGGED_IN_USER.Value;

                var employee   = _repo.GetEmployeeByUserID(userId);
                var employeeID = employee != null ? employee.ID : 0;
                var company    = _repo.GetCompanyByUserID(userId);
                var companyID  = company != null ? company.ID : 0;

                filterArgs.EmployeeID = employeeID;
                filterArgs.CompanyID  = companyID;

                var data   = _repo.GetJobList(filterArgs);
                var Result = new
                {
                    Data = data
                };

                var jsonResult = Json(Result, JsonRequestBehavior.AllowGet);
                jsonResult.MaxJsonLength = int.MaxValue;
                return(jsonResult);
            }
            catch (Exception ex)
            {
                return(Json(string.Format("There was an error when fetching data: {0}", ex.Message), JsonRequestBehavior.AllowGet));
            }
        }
        /// <summary>
        ///  Gets list of jobs using filters supplied. A list view by a job seeker/ employee
        /// </summary>
        /// <param name="filterArgs"></param>
        /// <returns></returns>
        public List <JobModel> GetJobs(JobFilterArgument filterArgs)
        {
            using (var context = new FleetConnectAssessmentEntities())
            {
                var employeeID = filterArgs.EmployeeID;

                var mappedJobs = (from job in context.Jobs
                                  join empJob in context.EmployeeJobs on job.ID equals empJob.JobID into queryResult
                                  where (job.CompanyID == filterArgs.CompanyID || (filterArgs.CompanyID <= 0 || filterArgs.CompanyID == null || filterArgs.CompanyID == 0))
                                  where (job.YearsOfExperience <= filterArgs.NoOfYersOfExperience || filterArgs.NoOfYersOfExperience == null)
                                  from item in queryResult.DefaultIfEmpty()
                                  select new  JobModel()
                {
                    AlreadyApplied = (item != null && item.EmployeeID == employeeID ? true : false),
                    ID = job.ID,
                    Category = job.Category,
                    CompanyID = job.CompanyID,
                    JobDescription = job.JobDescription,
                    Keywords = job.Keywords,
                    Title = job.Title,
                    YearsOfExperience = job.YearsOfExperience,
                    CompanyName = job.Company.Name
                }).ToList();

                if (!string.IsNullOrEmpty(filterArgs.Keyword))
                {
                    mappedJobs = filterJobsByKeywords(mappedJobs, filterArgs.Keyword);
                }

                return(mappedJobs);
            }
        }
        /// <summary>
        ///  Gets list of jobs using filters supplied. This is for the job list viewd by an employer
        /// </summary>
        /// <param name="filterArgs"></param>
        /// <returns></returns>

        public List <JobListModel> GetJobList(JobFilterArgument filterArgs)
        {
            using (var context = new FleetConnectAssessmentEntities())
            {
                var employeeID = filterArgs.EmployeeID;

                var jobs = (from job in context.vw_Jobs
                            where (job.CompanyID == filterArgs.CompanyID || (filterArgs.CompanyID <= 0 || filterArgs.CompanyID == null || filterArgs.CompanyID == 0))
                            where (job.YearsOfExperience <= filterArgs.NoOfYersOfExperience || filterArgs.NoOfYersOfExperience == null)
                            orderby job.Title
                            select job).ToList();

                var mappedJobs = jobs.Map();

                return(mappedJobs);
            }
        }
        public JsonResult GetJobs(JobFilterArgument filterArgs)
        {
            var result = _repo.GetJobs(filterArgs);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }