public async Task <Vacancy> GetAuthorisedVacancyAsync(VacancyRouteModel vrm, string routeName)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId);

            CheckAuthorisedAccess(vacancy, vrm.EmployerAccountId);

            CheckRouteIsValidForVacancy(vacancy, routeName);

            return(vacancy);
        }
        public async Task <JobAdvertConfirmationViewModel> GetVacancyConfirmationJobAdvertAsync(VacancyRouteModel vrm)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId);

            var vm = new JobAdvertConfirmationViewModel
            {
                Title                   = vacancy.Title,
                VacancyReference        = vacancy.VacancyReference?.ToString(),
                ApprovedJobAdvert       = vacancy.Status == VacancyStatus.Submitted,
                RejectedJobAdvert       = vacancy.Status == VacancyStatus.Rejected,
                TrainingProviderName    = vacancy.TrainingProvider.Name,
                FindAnApprenticeshipUrl = _externalLinksConfiguration.FindAnApprenticeshipUrl
            };

            return(vm);
        }
        public async Task <Vacancy> GetVacancy(VacancyRouteModel vrm)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId);

            Utility.CheckAuthorisedAccess(vacancy, vrm.EmployerAccountId);

            return(vacancy);
        }
        public async Task <Vacancy> GetVacancy(VacancyRouteModel vrm)
        {
            var vacancy = await _client.GetVacancyAsync(vrm.VacancyId.GetValueOrDefault());

            Utility.CheckAuthorisedAccess(vacancy, vrm.Ukprn);

            return(vacancy);
        }
Example #5
0
        public async Task <CloseViewModel> GetCloseViewModelAsync(VacancyRouteModel vrm)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId.GetValueOrDefault());

            Utility.CheckAuthorisedAccess(vacancy, vrm.Ukprn);

            if (!vacancy.CanClose)
            {
                throw new InvalidStateException(string.Format(ErrorMessages.VacancyNotAvailableForClosing, vacancy.Title));
            }

            var vm = new CloseViewModel {
                Title            = vacancy.Title,
                VacancyReference = vacancy.VacancyReference.Value.ToString()
            };

            return(vm);
        }
        public async Task <DeleteViewModel> GetDeleteViewModelAsync(VacancyRouteModel vrm)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId.Value);

            Utility.CheckAuthorisedAccess(vacancy, vrm.Ukprn);

            if (!vacancy.CanDelete)
            {
                throw new InvalidStateException(string.Format(ErrorMessages.VacancyNotAvailableForEditing, vacancy.Title));
            }

            var vm = new DeleteViewModel
            {
                Title = vacancy.Title
            };

            return(vm);
        }
Example #7
0
        public static async Task <Vacancy> GetAuthorisedVacancyAsync(IProviderVacancyClient client, IRecruitVacancyClient vacancyClient, VacancyRouteModel vrm, string routeName)
        {
            var vacancy = await vacancyClient.GetVacancyAsync(vrm.VacancyId.GetValueOrDefault());

            CheckAuthorisedAccess(vacancy, vrm.Ukprn);

            CheckRouteIsValidForVacancy(vacancy, routeName, vrm);

            return(vacancy);
        }
Example #8
0
        public async Task <Guid> CloneVacancy(string employerAccountId, Guid vacancyId, VacancyUser user)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vacancyId);

            Utility.CheckAuthorisedAccess(vacancy, employerAccountId);

            var clonedVacancyId = await _client.CloneVacancyAsync(vacancyId, user, SourceOrigin.EmployerWeb);

            return(clonedVacancyId);
        }
        public async Task <Guid> CloneVacancy(string employerAccountId, Guid vacancyId, VacancyUser user)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vacancyId);

            _utility.CheckAuthorisedAccess(vacancy, employerAccountId);

            var clonedVacancyId = await _vacancyClient.CloneVacancyAsync(vacancyId, user,
                                                                         SourceOrigin.EmployerWeb, vacancy.StartDate.GetValueOrDefault(), vacancy.ClosingDate.GetValueOrDefault());

            return(clonedVacancyId);
        }
Example #10
0
        public async Task <Vacancy> GetVacancyAsync(VacancyRouteModel vrm)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId);

            Utility.CheckAuthorisedAccess(vacancy, vrm.EmployerAccountId);

            if (vacancy.CanExtendStartAndClosingDates == false)
            {
                throw new InvalidStateException(string.Format(ErrMsg.VacancyDatesCannotBeEdited, vacancy.Title));
            }

            return(vacancy);
        }
        public async Task <Vacancy> GetCloneableAuthorisedVacancyAsync(VacancyRouteModel vrm)
        {
            var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId.GetValueOrDefault());

            Utility.CheckAuthorisedAccess(vacancy, vrm.Ukprn);

            if (!vacancy.CanClone)
            {
                throw new InvalidStateException(string.Format(ErrorMessages.VacancyNotAvailableForCloning, vacancy.Title));
            }

            return(vacancy);
        }
        public async Task <IActionResult> ConfirmTrainingProvider(ConfirmTrainingProviderViewModel confirmDetailsVm)
        {
            if (!TempData.ContainsKey(TrainingProviderJourneyTempDataKey))
            {
                return(RedirectToRoute(RouteNames.TrainingProvider_Select_Get));
            }

            TempData.Remove(TrainingProviderJourneyTempDataKey);
            var vacancy = await _vacancyClient.GetVacancyAsync(confirmDetailsVm.VacancyId);

            Utility.CheckAuthorisedAccess(vacancy, confirmDetailsVm.EmployerAccountId);
            return(View(confirmDetailsVm));
        }
Example #13
0
        public static async Task <ApplicationReview> GetAuthorisedApplicationReviewAsync(IRecruitVacancyClient vacancyClient, ApplicationReviewRouteModel rm)
        {
            var applicationReview = await vacancyClient.GetApplicationReviewAsync(rm.ApplicationReviewId);

            var vacancy = await vacancyClient.GetVacancyAsync(rm.VacancyId.GetValueOrDefault());

            try
            {
                CheckAuthorisedAccess(vacancy, rm.Ukprn);
                return(applicationReview);
            }
            catch (Exception)
            {
                throw new AuthorisationException(string.Format(ExceptionMessages.ApplicationReviewUnauthorisedAccessForProvider, rm.Ukprn,
                                                               vacancy.TrainingProvider.Ukprn, rm.ApplicationReviewId, vacancy.Id));
            }
        }
Example #14
0
        public static async Task <ApplicationReview> GetAuthorisedApplicationReviewAsync(IRecruitVacancyClient client, ApplicationReviewRouteModel rm)
        {
            var applicationReview = await client.GetApplicationReviewAsync(rm.ApplicationReviewId);

            var vacancy = await client.GetVacancyAsync(rm.VacancyId);

            try
            {
                CheckAuthorisedAccess(vacancy, rm.EmployerAccountId);
                return(applicationReview);
            }
            catch (Exception)
            {
                throw new AuthorisationException(string.Format(ExceptionMessages.ApplicationReviewUnauthorisedAccess, rm.EmployerAccountId,
                                                               vacancy.EmployerAccountId, rm.ApplicationReviewId, vacancy.Id));
            }
        }
        private async Task <Vacancy> MapDraftVacancyValues(CreateVacancyCommand request, Vacancy draftVacancyFromRequest, bool requiresEmployerReview)
        {
            var newVacancy = await _recruitVacancyClient.GetVacancyAsync(draftVacancyFromRequest.Id);

            draftVacancyFromRequest.VacancyReference = newVacancy.VacancyReference;
            draftVacancyFromRequest.TrainingProvider = request.Vacancy.TrainingProvider;
            draftVacancyFromRequest.CreatedByUser    = newVacancy.CreatedByUser;
            draftVacancyFromRequest.CreatedDate      = newVacancy.CreatedDate;
            draftVacancyFromRequest.OwnerType        = newVacancy.OwnerType;
            draftVacancyFromRequest.SourceOrigin     = newVacancy.SourceOrigin;
            draftVacancyFromRequest.SourceType       = newVacancy.SourceType;

            var now = _timeProvider.Now;

            if (draftVacancyFromRequest.EmployerNameOption == EmployerNameOption.TradingName)
            {
                var employerProfile = await _recruitVacancyClient.GetEmployerProfileAsync(
                    draftVacancyFromRequest.EmployerAccountId,
                    draftVacancyFromRequest.AccountLegalEntityPublicHashedId);

                employerProfile.TradingName = draftVacancyFromRequest.EmployerName;
                await _recruitVacancyClient.UpdateEmployerProfileAsync(employerProfile, draftVacancyFromRequest.CreatedByUser);
            }

            if (requiresEmployerReview)
            {
                draftVacancyFromRequest.Status       = VacancyStatus.Review;
                draftVacancyFromRequest.ReviewDate   = now;
                draftVacancyFromRequest.ReviewByUser = request.VacancyUserDetails;
                draftVacancyFromRequest.ReviewByUser = request.VacancyUserDetails;
                draftVacancyFromRequest.ReviewCount += 1;
            }
            else
            {
                draftVacancyFromRequest.Status          = VacancyStatus.Submitted;
                draftVacancyFromRequest.SubmittedDate   = now;
                draftVacancyFromRequest.SubmittedByUser = request.VacancyUserDetails;
            }

            draftVacancyFromRequest.LastUpdatedDate   = now;
            draftVacancyFromRequest.LastUpdatedByUser = request.VacancyUserDetails;
            return(draftVacancyFromRequest);
        }