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);
        }
Exemplo n.º 2
0
        public MediatorResponse <CandidateApplicationSummariesViewModel> GetCandidateApplications(CandidateApplicationsSearchViewModel searchViewModel, string ukprn)
        {
            var viewModel = _candidateProvider.GetCandidateApplicationSummaries(searchViewModel, ukprn);

            return(GetMediatorResponse(CandidateMediatorCodes.GetCandidateApplications.Ok, viewModel));
        }
        public ActionResult Candidate(CandidateApplicationsSearchViewModel searchViewModel)
        {
            var response = _candidateMediator.GetCandidateApplications(searchViewModel, User.GetUkprn());

            return(View(response.ViewModel));
        }