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