/// <summary>
        /// Метод отображает необходимые вакансии для различных ролей
        /// </summary>
        /// <param name="filter"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public ActionResult ShowVacancies(VacancyFilter filter, FetchOptions options)
        {
            var model = new VacancyListViewModel
            {
                Role = CurrentUser.Role
            };

            switch (CurrentUser.Role)
            {
            case Models.Role.Employer:
            {
                model.Vacancies = employerRepository.ShowMyVacancies(CurrentUser.Id, filter, options);
                return(View(model));
            }

            case Models.Role.Admin:
            {
                model.Vacancies = employerRepository.GetAllWithSort(options);
                return(View(model));
            }

            case Role.Jobseeker:
            {
                model.Vacancies = employerRepository.GetAllWithSort(options);
                return(View(model));
            }
            }
            return(View());
        }
        /// <summary>
        /// метод для получения вакансий, соответствующих критериям поиска
        /// </summary>
        /// <param name="selectedCompany"></param>
        /// <param name="selectedExperience"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public ActionResult GetSelectedItems(string selectedCompany, string selectedExperience, string name)
        {
            if (long.TryParse(selectedCompany, out long company) != true)
            {
                company = 0;
            }
            else
            {
                company = long.Parse(selectedCompany);
            }
            List <Experience> experiences = new List <Experience>();

            if (long.TryParse(selectedExperience, out long experience) != true)
            {
                experiences = null;
            }
            else
            {
                experiences.Add(experienceRepository.Load(long.Parse(selectedExperience)));
            }
            VacancyFilter filter = new VacancyFilter
            {
                CompanyName  = companyRepository.Load(company),
                Experience   = experiences,
                SearchString = name
            };
            IList <Vacancy> vacancies = employerRepository.GetVacanciesFiltered(filter);
            var             model     = new VacancyListViewModel
            {
                Vacancies = vacancies,
                Role      = CurrentUser.Role
            };

            return(PartialView("VacanciesTable", model));
        }
        public ActionResult Index(FetchOptions options)
        {
            var vacancies = vacancyRepository.GetAllVacancies(options);
            var model     = new VacancyListViewModel
            {
                Vacancies = vacancies
            };

            return(View(model));
        }
        public async Task <IActionResult> Vacancies(int page = 1, int?categoryId = null)
        {
            SetPageMetaData(new PageMetaData
            {
                Title = "Job",
                Url   = new Uri($"{_settings.WebSiteUrl}vacancies/{page}")
            });

            var model = new VacancyListViewModel
            {
                List       = await _service.GetVacancies(page),
                CategoryId = categoryId
            };

            return(View("~/Views/Home/Vacancies.cshtml", model));
        }
        /// <summary>
        /// Позволяет соискателю найти подходящую вакансию
        /// </summary>
        /// <returns></returns>
        public ActionResult FindVacancy()
        {
            var         exp  = jobseekerRepository.FindProfile(long.Parse(User.Identity.GetUserId())).Experience;
            List <long> list = new List <long>();

            foreach (var e in exp)
            {
                list.Add(e.Id);
            }
            var model = new VacancyListViewModel
            {
                Vacancies = employerRepository.FindSuitableVacancy(list)
            };

            return(View("ShowVacancies", "", model));
        }