private ApprenticeshipApplicationViewModel PatchWithVacancyDetail( Guid candidateId, int vacancyId, ApprenticeshipApplicationViewModel apprenticeshipApplicationViewModel) { // TODO: why have a patch method like this? should be done in mapper. var vacancyDetailViewModel = _apprenticeshipVacancyDetailProvider.GetVacancyDetailViewModel(candidateId, vacancyId); if (vacancyDetailViewModel == null || vacancyDetailViewModel.VacancyStatus == VacancyStatuses.Unavailable) { apprenticeshipApplicationViewModel.ViewModelMessage = MyApplicationsPageMessages.ApprenticeshipNoLongerAvailable; apprenticeshipApplicationViewModel.Status = ApplicationStatuses.ExpiredOrWithdrawn; return(apprenticeshipApplicationViewModel); } if (vacancyDetailViewModel.HasError()) { apprenticeshipApplicationViewModel.ViewModelMessage = vacancyDetailViewModel.ViewModelMessage; return(apprenticeshipApplicationViewModel); } apprenticeshipApplicationViewModel.VacancyDetail = vacancyDetailViewModel; apprenticeshipApplicationViewModel.Candidate.EmployerQuestionAnswers.SupplementaryQuestion1 = vacancyDetailViewModel.SupplementaryQuestion1; apprenticeshipApplicationViewModel.Candidate.EmployerQuestionAnswers.SupplementaryQuestion2 = vacancyDetailViewModel.SupplementaryQuestion2; return(apprenticeshipApplicationViewModel); }
public MediatorResponse ApprenticeshipVacancyDetails(Guid candidateId, int vacancyId) { var vacancyDetailViewModel = _apprenticeshipVacancyDetailProvider.GetVacancyDetailViewModel(candidateId, vacancyId); if (vacancyDetailViewModel == null || vacancyDetailViewModel.VacancyStatus == VacancyStatuses.Unavailable) { return(GetMediatorResponse(AccountMediatorCodes.VacancyDetails.Unavailable, MyApplicationsPageMessages.ApprenticeshipNoLongerAvailable, UserMessageLevel.Warning)); } if (vacancyDetailViewModel.HasError()) { return(GetMediatorResponse(AccountMediatorCodes.VacancyDetails.Error, vacancyDetailViewModel.ViewModelMessage, UserMessageLevel.Error)); } return(GetMediatorResponse(AccountMediatorCodes.VacancyDetails.Available)); }
public MediatorResponse <VacancyDetailViewModel> Details(string vacancyIdString, Guid?candidateId) { int vacancyId; if (!TryParseVacancyId(vacancyIdString, out vacancyId)) { return(GetMediatorResponse <VacancyDetailViewModel>(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound)); } var vacancyDetailViewModel = _apprenticeshipVacancyDetailProvider.GetVacancyDetailViewModel(candidateId, vacancyId); if (vacancyDetailViewModel == null) { return(GetMediatorResponse <VacancyDetailViewModel>(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound)); } if (vacancyDetailViewModel.HasError()) { return(GetMediatorResponse(ApprenticeshipSearchMediatorCodes.Details.VacancyHasError, vacancyDetailViewModel, vacancyDetailViewModel.ViewModelMessage, UserMessageLevel.Warning)); } if ((!vacancyDetailViewModel.CandidateApplicationStatus.HasValue && vacancyDetailViewModel.VacancyStatus != VacancyStatuses.Live) || (vacancyDetailViewModel.CandidateApplicationStatus.HasValue && vacancyDetailViewModel.VacancyStatus == VacancyStatuses.Unavailable)) { // Candidate has no application for the vacancy and the vacancy is no longer live OR // candidate has an application (at least a draft) but the vacancy is no longer available. return(GetMediatorResponse <VacancyDetailViewModel>(ApprenticeshipSearchMediatorCodes.Details.VacancyNotFound)); } var distance = UserDataProvider.Pop(CandidateDataItemNames.VacancyDistance); var lastVacancyId = UserDataProvider.Pop(CandidateDataItemNames.LastViewedVacancyId); if (HasToPopulateDistance(vacancyId, distance, lastVacancyId)) { vacancyDetailViewModel.Distance = distance; UserDataProvider.Push(CandidateDataItemNames.VacancyDistance, distance); } UserDataProvider.Push(CandidateDataItemNames.LastViewedVacancyId, vacancyId.ToString(CultureInfo.InvariantCulture)); return(GetMediatorResponse(ApprenticeshipSearchMediatorCodes.Details.Ok, vacancyDetailViewModel)); }