public async Task <IActionResult> FindVacancy(FindVacancyEditModel m) { if (ModelState.IsValid) { var result = await _orchestrator.PostFindVacancyEditModelAsync(m); TempData[TempDataKeys.WithdrawVacancyReference] = result.VacancyReference; switch (result.ResultType) { case PostFindVacancyEditModelResultType.AlreadyClosed: return(RedirectToRoute(RouteNames.WithdrawVacancy_AlreadyClosed_Get, result.VacancyReference.Value)); case PostFindVacancyEditModelResultType.CanClose: return(RedirectToRoute(RouteNames.WithdrawVacancy_Confirm_Get, result.VacancyReference.Value)); case PostFindVacancyEditModelResultType.NotFound: ModelState.AddModelError(nameof(FindVacancyViewModel.VacancyReference), $"There are no live vacancies with the reference '{m.VacancyReference}'"); break; case PostFindVacancyEditModelResultType.NotLive: ModelState.AddModelError(nameof(FindVacancyViewModel.VacancyReference), $"There are no live vacancies with the reference 'VAC{result.VacancyReference}'"); break; default: throw new NotImplementedException($"{result.ResultType.ToString()} is not handled"); } } var vm = _orchestrator.GetFindVacancyViewModel(m); return(View(vm)); }
public FindVacancyViewModel GetFindVacancyViewModel(FindVacancyEditModel m) { var vm = GetFindVacancyViewModel(); vm.VacancyReference = m.VacancyReference; return(vm); }
public async Task ShouldReturnNotFoundIfVacancyDoesNotExist() { _clientMock.Setup(c => c.GetVacancyAsync(VacancyReference)) .ThrowsAsync(new VacancyNotFoundException("not found")); var orch = _sut; var m = new FindVacancyEditModel { VacancyReference = VacancyReference.ToString() }; var result = await orch.PostFindVacancyEditModelAsync(m); result.ResultType.Should().Be(PostFindVacancyEditModelResultType.NotFound); }
public async Task ShouldReturnCanCloseIfVacancyCanBeClosed() { _clientMock.Setup(c => c.GetVacancyAsync(VacancyReference)) .ReturnsAsync(new Vacancy { Status = VacancyStatus.Live }); var orch = _sut; var m = new FindVacancyEditModel { VacancyReference = VacancyReference.ToString() }; var result = await orch.PostFindVacancyEditModelAsync(m); result.ResultType.Should().Be(PostFindVacancyEditModelResultType.CanClose); }
public async Task ShouldReturnNotLiveIfVacancyExistsAndIsNotLive(VacancyStatus status) { _clientMock.Setup(c => c.GetVacancyAsync(VacancyReference)) .ReturnsAsync(new Vacancy { Status = status }); var orch = _sut; var m = new FindVacancyEditModel { VacancyReference = VacancyReference.ToString() }; var result = await orch.PostFindVacancyEditModelAsync(m); result.ResultType.Should().Be(PostFindVacancyEditModelResultType.NotLive); }
public async Task <PostFindVacancyEditModelResult> PostFindVacancyEditModelAsync(FindVacancyEditModel m) { var vacancyReference = m.VacancyReference.ToUpper().Replace("VAC", ""); Vacancy vacancy = null; if (long.TryParse(vacancyReference, out var vacancyReferenceNumber)) { vacancy = await GetVacancyAsync(vacancyReferenceNumber); } if (vacancy != null && vacancy.CanClose) { return new PostFindVacancyEditModelResult { ResultType = PostFindVacancyEditModelResultType.CanClose, VacancyReference = vacancy.VacancyReference } } ; if (vacancy != null && vacancy.Status == VacancyStatus.Closed) { return new PostFindVacancyEditModelResult { ResultType = PostFindVacancyEditModelResultType.AlreadyClosed, VacancyReference = vacancy.VacancyReference } } ; if (vacancy != null && vacancy.Status != VacancyStatus.Live) { return new PostFindVacancyEditModelResult { ResultType = PostFindVacancyEditModelResultType.NotLive, VacancyReference = vacancy.VacancyReference } } ; return(new PostFindVacancyEditModelResult { ResultType = PostFindVacancyEditModelResultType.NotFound }); }