public async Task <IActionResult> RejectJobAdvert(RejectJobAdvertViewModel vm) { if (!ModelState.IsValid) { var viewModel = await _orchestrator.GetVacancyRejectJobAdvertAsync(vm); return(View("RejectJobAdvert", viewModel)); } if (vm.RejectJobAdvert.GetValueOrDefault()) { var response = await _orchestrator.RejectJobAdvertAsync(vm, User.ToVacancyUser()); if (!response.Success) { response.AddErrorsToModelState(ModelState); } if (response.Data.IsRejected) { return(RedirectToRoute(RouteNames.JobAdvertConfirmation_Get)); } } return(RedirectToRoute(RouteNames.Vacancy_Preview_Get, new { VacancyId = vm.VacancyId, SubmitToEfsa = false })); }
public async Task RejectJobAdvertAsync_ShouldSendCommand() { //Arrange var user = new VacancyUser { Email = "*****@*****.**", Name = "advertname", UserId = "advertId" }; var vacancy = new Vacancy { EmployerAccountId = "ABCDEF", AccountLegalEntityPublicHashedId = "XVYABD", Id = Guid.Parse("84af954e-5baf-4942-897d-d00180a0839e"), Title = "has a value", NumberOfPositions = 1, EmployerLocation = new Address { Postcode = "has a value" }, ShortDescription = "has a value", ProgrammeId = "has a value", Wage = new Wage { Duration = 1, WageType = WageType.FixedWage }, LegalEntityName = "legal name", EmployerNameOption = EmployerNameOption.RegisteredName, StartDate = DateTime.Now, Status = VacancyStatus.Review, VacancyReference = 123456 }; var rejectJobAdvertViewModel = new RejectJobAdvertViewModel { RejectJobAdvert = true, VacancyId = vacancy.Id, EmployerAccountId = "ABCDEF" }; _mockRecruitVacancyClient.Setup(x => x.GetVacancyAsync(vacancy.Id)).ReturnsAsync(vacancy); _mockRecruitVacancyClient.Setup(x => x.GetEmployerDescriptionAsync(vacancy)).ReturnsAsync("employer description"); _mockRecruitVacancyClient.Setup(x => x.GetEmployerNameAsync(vacancy)).ReturnsAsync("employer name"); _mockRecruitVacancyClient.Setup(c => c.Validate(vacancy, It.IsAny <VacancyRuleSet>())).Returns(new EntityValidationResult()); var geocodeImageService = new Mock <IGeocodeImageService>(); var externalLinks = new Mock <IOptions <ExternalLinksConfiguration> >(); var mapper = new DisplayVacancyViewModelMapper(geocodeImageService.Object, externalLinks.Object, _mockRecruitVacancyClient.Object); var legalEntityAgreement = new Mock <ILegalEntityAgreementService>(); var utility = new Utility(_mockRecruitVacancyClient.Object, Mock.Of <IFeature>()); var sut = new VacancyPreviewOrchestrator(_mockRecruitVacancyClient.Object, Mock.Of <ILogger <VacancyPreviewOrchestrator> >(), mapper, _mockReviewSummaryService.Object, legalEntityAgreement.Object, _mockmessaging.Object, Mock.Of <IOptions <ExternalLinksConfiguration> >(), utility); //Act var response = await sut.RejectJobAdvertAsync(rejectJobAdvertViewModel, user); //Assert _mockmessaging.Verify(c => c.SendCommandAsync(It.IsAny <ICommand>()), Times.Once()); response.Data.IsRejected.Should().Be(true); }
public async Task <RejectJobAdvertViewModel> GetVacancyRejectJobAdvertAsync(VacancyRouteModel vrm) { var vacancy = await _vacancyClient.GetVacancyAsync(vrm.VacancyId); var vm = new RejectJobAdvertViewModel { RejectionReason = vacancy.EmployerRejectedReason, TrainingProviderName = vacancy.TrainingProvider.Name }; return(vm); }
public async Task <OrchestratorResponse <RejectVacancyResponse> > RejectJobAdvertAsync(RejectJobAdvertViewModel vm, VacancyUser user) { var vacancy = await _utility.GetAuthorisedVacancyAsync(vm, RouteNames.RejectJobAdvert_Post); if (!vacancy.CanReject) { throw new InvalidStateException(string.Format(ErrMsg.VacancyNotAvailableForReject, vacancy.Title)); } return(await ValidateAndExecute( vacancy, v => ValidateVacancy(v, RejectValidationRules), v => RejectActionAsync(v, user) )); }