public CandidateApplicationSummariesViewModel GetCandidateApplicationSummaries(CandidateApplicationsSearchViewModel searchViewModel, string ukprn) { var candidateId = searchViewModel.CandidateGuid; var candidate = _candidateApplicationService.GetCandidate(candidateId); var apprenticeshipApplicationSummaries = _mapper.Map <IEnumerable <ApprenticeshipApplicationSummary>, IEnumerable <CandidateApplicationSummaryViewModel> >(_candidateApplicationService.GetApprenticeshipApplications(candidateId)); var traineeshipApplicationSummaries = _mapper.Map <IEnumerable <TraineeshipApplicationSummary>, IEnumerable <CandidateApplicationSummaryViewModel> >(_candidateApplicationService.GetTraineeshipApplications(candidateId)); var candidateApplicationSummaries = apprenticeshipApplicationSummaries.Union(traineeshipApplicationSummaries).Where(a => a.Status >= ApplicationStatuses.Submitted).ToList(); //Restrict to only the applications for vacancies owned by the logged in user var provider = _providerService.GetProvider(ukprn); var ownedProviderSites = _providerService.GetOwnedProviderSites(provider.ProviderId).Select(ps => ps.ProviderSiteId).ToList(); var vacancySummaries = _vacancyPostingService.GetVacancySummariesByIds( candidateApplicationSummaries.Select(a => a.VacancyId).Distinct()) .Where( v => (v.VacancyManagerId != null && ownedProviderSites.Contains(v.VacancyManagerId.Value)) || (v.DeliveryOrganisationId != null && ownedProviderSites.Contains(v.DeliveryOrganisationId.Value))) .ToDictionary(v => v.VacancyId, v => v); candidateApplicationSummaries = candidateApplicationSummaries.Where(a => vacancySummaries.ContainsKey(a.VacancyId)).ToList(); var page = GetOrderedApplicationSummaries(searchViewModel.OrderByField, searchViewModel.Order, candidateApplicationSummaries).GetCurrentPage(searchViewModel).ToList(); foreach (var application in page) { var vacancy = vacancySummaries[application.VacancyId]; application.VacancyReferenceNumber = vacancy.VacancyReferenceNumber; application.EmployerLocation = vacancy.EmployerLocation; application.AnonymousLinkData = _encryptionService.Encrypt(new AnonymisedApplicationLink(application.ApplicationId, _dateTimeService.TwoWeeksFromUtcNow)); } var applicationSummaries = new PageableViewModel <CandidateApplicationSummaryViewModel> { Page = page, ResultsCount = vacancySummaries.Count, CurrentPage = searchViewModel.CurrentPage, TotalNumberOfPages = vacancySummaries.TotalPages(searchViewModel) }; var viewModel = new CandidateApplicationSummariesViewModel { CandidateApplicationsSearch = searchViewModel, ApplicantDetails = _mapper.Map <Candidate, ApplicantDetailsViewModel>(candidate), ApplicationSummaries = applicationSummaries }; return(viewModel); }
public ActionResult SortCandidate(CandidateApplicationSummariesViewModel viewModel) { return(RedirectToRoute(RecruitmentRouteNames.ViewCandidate, viewModel.CandidateApplicationsSearch.RouteValues)); }