public WhatHappensNextViewModel GetWhatHappensNextViewModel(Guid candidateId, int vacancyId)
        {
            _logger.Debug(
                "Calling TraineeshipApplicationProvider to get the What Happens Next data for candidate ID: {0}, vacancy ID: {1}.",
                candidateId, vacancyId);

            try
            {
                var vacancyDetailViewModel = _traineeshipVacancyDetailProvider.GetVacancyDetailViewModel(candidateId, vacancyId);

                if (vacancyDetailViewModel.HasError())
                {
                    return(new WhatHappensNextViewModel(vacancyDetailViewModel.ViewModelMessage));
                }

                var candidate = _candidateService.GetCandidate(candidateId);

                return(new WhatHappensNextViewModel
                {
                    VacancyReference = vacancyDetailViewModel.VacancyReference,
                    VacancyTitle = vacancyDetailViewModel.Title,
                    SentEmail = candidate.CommunicationPreferences.AllowEmail,
                    ProviderContactInfo = vacancyDetailViewModel.Contact
                });
            }
            catch (Exception e)
            {
                var message =
                    string.Format("Get What Happens Next View Model failed for candidate ID: {0}, vacancy ID: {1}.",
                                  candidateId, vacancyId);

                _logger.Error(message, e);

                return(new WhatHappensNextViewModel(MyApplicationsPageMessages.CreateOrRetrieveApplicationFailed));
            }
        }
예제 #2
0
        public MediatorResponse TraineeshipVacancyDetails(Guid candidateId, int vacancyId)
        {
            var vacancyDetailViewModel = _traineeshipVacancyDetailProvider.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));
        }
예제 #3
0
        public MediatorResponse <VacancyDetailViewModel> Details(string vacancyIdString, Guid?candidateId, string searchReturnUrl)
        {
            int vacancyId;

            if (!TryParseVacancyId(vacancyIdString, out vacancyId))
            {
                return(GetMediatorResponse <VacancyDetailViewModel>(TraineeshipSearchMediatorCodes.Details.VacancyNotFound));
            }

            var vacancyDetailViewModel = _traineeshipVacancyDetailProvider.GetVacancyDetailViewModel(candidateId, vacancyId);

            if (vacancyDetailViewModel == null || vacancyDetailViewModel.VacancyStatus == VacancyStatuses.Unavailable)
            {
                return(GetMediatorResponse <VacancyDetailViewModel>(TraineeshipSearchMediatorCodes.Details.VacancyNotFound));
            }

            if (vacancyDetailViewModel.HasError())
            {
                return(GetMediatorResponse(TraineeshipSearchMediatorCodes.Details.VacancyHasError, vacancyDetailViewModel, vacancyDetailViewModel.ViewModelMessage, UserMessageLevel.Warning));
            }

            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);
            }

            vacancyDetailViewModel.SearchReturnUrl = searchReturnUrl;

            UserDataProvider.Push(CandidateDataItemNames.LastViewedVacancyId, vacancyId.ToString(CultureInfo.InvariantCulture));

            return(GetMediatorResponse(TraineeshipSearchMediatorCodes.Details.Ok, vacancyDetailViewModel));
        }