public async Task <IActionResult> SaveReferralAsync() { var selectedProviders = TempData["SelectedProviders"] as string; var saveReferralViewModel = JsonConvert.DeserializeObject <SaveReferralViewModel>(selectedProviders !); var opportunityDto = _mapper.Map <OpportunityDto>(saveReferralViewModel); var opportunityItemDto = _mapper.Map <OpportunityItemDto>(saveReferralViewModel); if (await _opportunityService.IsNewReferralAsync(saveReferralViewModel.OpportunityItemId)) { opportunityItemDto.OpportunityId = saveReferralViewModel.OpportunityId; if (opportunityItemDto.OpportunityId == 0) { opportunityItemDto.OpportunityId = await CreateOpportunityAsync(opportunityDto); } var opportunityItemId = await _opportunityService.CreateOpportunityItemAsync(opportunityItemDto); return(RedirectToRoute("GetPlacementInformation", new { opportunityItemId })); } var providerSearchDto = new ProviderSearchDto { OpportunityId = saveReferralViewModel.OpportunityId, OpportunityItemId = saveReferralViewModel.OpportunityItemId, SearchRadius = saveReferralViewModel.SearchRadius, Postcode = saveReferralViewModel.Postcode, RouteId = saveReferralViewModel.SelectedRouteId ?? 0, SearchResultProviderCount = saveReferralViewModel.SearchResultProviderCount }; await _opportunityService.UpdateOpportunityItemAsync(providerSearchDto); await _opportunityService.UpdateReferralsAsync(opportunityItemDto); return(RedirectToRoute("GetPlacementInformation", new { saveReferralViewModel.OpportunityItemId })); }
public When_Opportunity_Controller_Save_Referral_Update_Opportunity() { const int opportunityId = 1; const int opportunityItemId = 2; _opportunityService = Substitute.For <IOpportunityService>(); _opportunityService.IsNewReferralAsync(opportunityItemId).Returns(false); 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 = opportunityId, OpportunityItemId = opportunityItemId, 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(); }