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 })); }