private void Validate(ContinueOpportunityViewModel viewModel) { if (!viewModel.IsReferralSelected) { ModelState.AddModelError("ReferralItems[0].IsSelected", "You must select an opportunity to continue"); } }
public async Task <IActionResult> SaveSelectedOpportunitiesAsync(ContinueOpportunityViewModel viewModel) { if (viewModel.SubmitAction == "SaveSelectedOpportunities") { Validate(viewModel); if (!ModelState.IsValid) { var opportunityBasketViewModel = await _opportunityService.GetOpportunityBasketAsync(viewModel.OpportunityId); return(View("OpportunityBasket", opportunityBasketViewModel)); } } await _opportunityService.ContinueWithOpportunitiesAsync(viewModel); return(viewModel.SubmitAction == "CompleteProvisionGaps" ? RedirectToRoute("Start") : RedirectToRoute("GetEmployerConsent", new { viewModel.OpportunityId, viewModel.OpportunityItemId })); }
public async Task ContinueWithOpportunitiesAsync(ContinueOpportunityViewModel viewModel) { var allProvisionGaps = viewModel.SelectedOpportunity.All(oi => oi.OpportunityType == OpportunityType.ProvisionGap.ToString()); if (allProvisionGaps) { var ids = viewModel.SelectedOpportunity.Select(oi => oi.Id); await SetOpportunityItemsAsCompletedAsync(ids); return; } var referralIds = viewModel.SelectedOpportunity.Where(oi => oi.IsSelected && oi.OpportunityType == OpportunityType.Referral.ToString()) .Select(oi => oi.Id).ToList(); if (referralIds.Any()) { await SetOpportunityItemsAsReferralAsync(referralIds); } }
public When_OpportunityService_Is_Called_To_Continue_Basket_ProvisionGapOnly() { var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); httpContextAccessor.HttpContext.Returns(new DefaultHttpContext { User = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.GivenName, "TestUser") })) }); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); dateTimeProvider.UtcNow().Returns(new DateTime(2019, 1, 1)); var config = new MapperConfiguration(c => { c.AddMaps(typeof(OpportunityMapper).Assembly); c.ConstructServicesUsing(type => type.Name.Contains("LoggedInUserEmailResolver") ? new LoggedInUserEmailResolver <OpportunityItemIsSelectedForCompleteDto, OpportunityItem>(httpContextAccessor) : type.Name.Contains("LoggedInUserNameResolver") ? (object)new LoggedInUserNameResolver <OpportunityItemIsSelectedForCompleteDto, OpportunityItem>(httpContextAccessor) : type.Name.Contains("UtcNowResolver") ? new UtcNowResolver <OpportunityItemIsSelectedForCompleteDto, OpportunityItem>(dateTimeProvider) : null); }); var mapper = new Mapper(config); _opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >(); var opportunityRepository = Substitute.For <IOpportunityRepository>(); var provisionGapRepository = Substitute.For <IRepository <ProvisionGap> >(); var referralRepository = Substitute.For <IRepository <Domain.Models.Referral> >(); var googleMapApiClient = Substitute.For <IGoogleMapApiClient>(); var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >(); var opportunityService = new OpportunityService(mapper, opportunityRepository, _opportunityItemRepository, provisionGapRepository, referralRepository, googleMapApiClient, opportunityPipelineReportWriter, dateTimeProvider); var viewModel = new ContinueOpportunityViewModel { SelectedOpportunity = new List <SelectedOpportunityItemViewModel> { new SelectedOpportunityItemViewModel { Id = 1, IsSelected = true, OpportunityType = OpportunityType.ProvisionGap.ToString() }, new SelectedOpportunityItemViewModel { Id = 2, IsSelected = true, OpportunityType = OpportunityType.ProvisionGap.ToString() } } }; opportunityService.ContinueWithOpportunitiesAsync(viewModel).GetAwaiter().GetResult(); }