public async Task <IActionResult> SaveProvisionGapAsync(SaveProvisionGapViewModel viewModel) { var opportunityDto = _mapper.Map <OpportunityDto>(viewModel); var opportunityItemDto = _mapper.Map <OpportunityItemDto>(viewModel); if (await _opportunityService.IsNewProvisionGapAsync(viewModel.OpportunityItemId)) { opportunityItemDto.OpportunityId = viewModel.OpportunityId; if (opportunityItemDto.OpportunityId == 0) { opportunityItemDto.OpportunityId = await CreateOpportunityAsync(opportunityDto); } opportunityItemDto.ProvisionGap = new List <ProvisionGapDto> { new ProvisionGapDto() }; var opportunityItemId = await _opportunityService.CreateOpportunityItemAsync(opportunityItemDto); return(RedirectToRoute("GetPlacementInformation", new { opportunityItemId })); } var providerSearchDto = new ProviderSearchDto { OpportunityId = opportunityItemDto.OpportunityId, OpportunityItemId = opportunityItemDto.OpportunityItemId, SearchRadius = viewModel.SearchRadius, Postcode = viewModel.Postcode, RouteId = viewModel.SelectedRouteId ?? 0, SearchResultProviderCount = viewModel.SearchResultProviderCount }; await _opportunityService.UpdateOpportunityItemAsync(providerSearchDto); return(RedirectToRoute("GetPlacementInformation", new { opportunityItemDto.OpportunityItemId })); }
public When_Opportunity_Controller_Save_Referral_New_Opportunity() { _opportunityService = Substitute.For <IOpportunityService>(); _opportunityService .IsNewReferralAsync(Arg.Any <int>()) .Returns(true); _opportunityService.CreateOpportunityItemAsync(Arg.Any <OpportunityItemDto>()).Returns(2); var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); var config = new MapperConfiguration(c => { c.AddMaps(typeof(EmployerDtoMapper).Assembly); c.ConstructServicesUsing(type => { if (type.FullName != null && type.FullName.Contains("LoggedInUserEmailResolver")) { return(new LoggedInUserEmailResolver <SaveReferralViewModel, OpportunityDto>(httpContextAccessor)); } if (type.FullName != null && type.FullName.Contains("LoggedInUserNameResolver") && type.FullName.Contains("SaveReferralViewModel")) { return(new LoggedInUserNameResolver <SaveReferralViewModel, OpportunityDto>(httpContextAccessor)); } if (type.FullName != null && type.FullName.Contains("LoggedInUserNameResolver") && type.FullName.Contains("SelectedProviderViewModel")) { return(new LoggedInUserNameResolver <SelectedProviderViewModel, ReferralDto>(httpContextAccessor)); } return(null); }); }); var mapper = new Mapper(config); var opportunityController = new OpportunityController(_opportunityService, mapper); var controllerWithClaims = new ClaimsBuilder <OpportunityController>(opportunityController) .AddUserName(UserName) .AddEmail(Email) .Build(); httpContextAccessor.HttpContext.Returns(controllerWithClaims.HttpContext); var viewModel = new SaveReferralViewModel { SearchResultProviderCount = 2, SelectedRouteId = 1, Postcode = "cv12wt", SearchRadius = 10, OpportunityId = 0, OpportunityItemId = 0, SelectedProvider = new[] { new SelectedProviderViewModel { ProviderVenueId = 1, DistanceFromEmployer = 1.2m, IsSelected = false }, new SelectedProviderViewModel { ProviderVenueId = 2, DistanceFromEmployer = 3.4m, IsSelected = true } } }; var serializeObject = JsonConvert.SerializeObject(viewModel); var tempDataProvider = Substitute.For <ITempDataProvider>(); var tempDataDictionaryFactory = new TempDataDictionaryFactory(tempDataProvider); var tempData = tempDataDictionaryFactory.GetTempData(new DefaultHttpContext()); tempData.Add("SelectedProviders", serializeObject); controllerWithClaims.TempData = tempData; _result = controllerWithClaims.SaveReferralAsync().GetAwaiter().GetResult(); }