// GET: Applications
        public async Task <IActionResult> Index(int pageIndex = 1, int pageSize = 10, string searchQuery = null)
        {
            IQueryable <Application> recruiterAgencyContext = _context.Applications
                                                              .Include(x => x.Candidate)
                                                              .ThenInclude(x => x.Department)
                                                              .ThenInclude(x => x.City)
                                                              .Include(x => x.ApplicationStatus)
                                                              .Include(x => x.Vacancy)
                                                              .ThenInclude(x => x.JobTitle)
                                                              .Include(x => x.Vacancy.CompanyOffice.Company)
                                                              .Include(x => x.Vacancy.Customer)
                                                              .Where(x => x.Vacancy.RecruiterId == int.Parse(HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier)));
            //if (!string.IsNullOrWhiteSpace(searchQuery))
            //{
            //    recruiterAgencyContext = recruiterAgencyContext.Where(x =>
            //        x.Candidate.FirstName.Contains(searchQuery)
            //        || x.Candidate.LastName.Contains(searchQuery)
            //        || x.Vacancy.JobTitle.Name.Contains(searchQuery));
            //}

            //var paginated = await Paginated<Application>.PaginateAsync(recruiterAgencyContext, pageIndex, pageSize);
            //paginated.SearchQuery = searchQuery;
            var response = new VacancyApplicationsResponse
            {
                VacancyId    = null,
                Applications = await recruiterAgencyContext.ToListAsync()
            };

            return(View(response));
        }
        public async Task <IActionResult> Applications(int vacancyId, int pageIndex = 1, int pageSize = 10, string searchQuery = null)
        {
            var vacancy = await _context.Vacancies
                          .Include(x => x.CompanyOffice)
                          .ThenInclude(x => x.Company)
                          .Include(x => x.CompanyOffice.City)
                          .Include(x => x.Customer)
                          .Include(x => x.JobTitle)
                          .ThenInclude(x => x.JobCategory)
                          .FirstOrDefaultAsync(x =>
                                               x.VacancyId == vacancyId &&
                                               x.RecruiterId == int.Parse(HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier)));

            if (vacancy == null)
            {
                return(Forbid());
            }

            IQueryable <Application> recruiterAgencyContext = _context.Applications
                                                              .Include(x => x.Candidate)
                                                              .ThenInclude(x => x.Department)
                                                              .ThenInclude(x => x.City)
                                                              .Include(x => x.ApplicationStatus)
                                                              .Include(x => x.Vacancy)
                                                              .Where(x => x.VacancyId == vacancyId);
            //if (!string.IsNullOrWhiteSpace(searchQuery))
            //{
            //    recruiterAgencyContext = recruiterAgencyContext.Where(x =>
            //        x.Candidate.FirstName.Contains(searchQuery)
            //        || x.Candidate.LastName.Contains(searchQuery));
            //}

            //var paginated = await Paginated<Application>.PaginateAsync(recruiterAgencyContext, pageIndex, pageSize);
            //paginated.SearchQuery = searchQuery;
            var response = new VacancyApplicationsResponse
            {
                VacancyId            = vacancyId,
                VacancyCustomer      = $"{vacancy.Customer.FirstName} {vacancy.Customer.LastName}",
                VacancyJobTitle      = $"{vacancy.JobTitle.Name}",
                VacancyCompany       = vacancy.CompanyOffice.Company.Name,
                VacancyCompanyOffice = $"{vacancy.CompanyOffice.City.Name}, {vacancy.CompanyOffice.Address}",
                Applications         = await recruiterAgencyContext.ToListAsync(),
                VacancyClosed        = vacancy.EndDate.HasValue
            };

            return(View("Applications/Index", response));
        }