private async Task SetProviderIsSelectedAsync(OpportunityProximitySearchViewModel resultsViewModel) { var referrals = await _opportunityService.GetReferralsAsync(resultsViewModel.SearchParameters.OpportunityItemId); foreach (var result in resultsViewModel.SearchResults.Results) { if (referrals.Any(r => r.ProviderVenueId == result.ProviderVenueId)) { result.IsSelected = true; } } }
private async Task <OpportunityProximitySearchViewModel> GetSearchResultsAsync(SearchParametersViewModel viewModel) { var searchResults = await _opportunityProximityService.SearchOpportunitiesByPostcodeProximityAsync(new OpportunityProximitySearchParametersDto { Postcode = viewModel.Postcode, SelectedRouteId = viewModel.SelectedRouteId, SearchRadius = SearchParametersViewModel.DefaultSearchRadius }); var additionalResults = searchResults.Any() ? new List <OpportunityProximitySearchResultByRouteViewModelItem>() : await _opportunityProximityService.SearchOpportunitiesForOtherRoutesByPostcodeProximityAsync(new OpportunityProximitySearchParametersDto { Postcode = viewModel.Postcode, SelectedRouteId = viewModel.SelectedRouteId, SearchRadius = SearchParametersViewModel.ZeroResultsSearchRadius }); var resultsViewModel = new OpportunityProximitySearchViewModel { SearchResults = new OpportunityProximitySearchResultsViewModel { Results = searchResults, AdditionalResults = additionalResults }, SearchParameters = await GetSearchParametersViewModelAsync(viewModel), OpportunityId = viewModel.OpportunityId, OpportunityItemId = viewModel.OpportunityItemId }; if (searchResults.Any() && viewModel.OpportunityId != 0 && viewModel.OpportunityItemId != 0 && !viewModel.HasUserChangedSearchParameters) { var opportunityItem = await _opportunityService.GetOpportunityItemAsync(resultsViewModel.SearchParameters .OpportunityItemId); if (opportunityItem != null && opportunityItem.Postcode == resultsViewModel.SearchParameters.Postcode && opportunityItem.RouteId == resultsViewModel.SearchParameters.SelectedRouteId) { await SetProviderIsSelectedAsync(resultsViewModel); } } if (!resultsViewModel.SearchParameters.HasUserChangedSearchParameters && (resultsViewModel.SearchParameters.PreviousPostcode != null && resultsViewModel.SearchParameters.PreviousPostcode != viewModel.Postcode) || (resultsViewModel.SearchParameters.PreviousSelectedRouteId != null && resultsViewModel.SearchParameters.PreviousSelectedRouteId != viewModel.SelectedRouteId)) { //Set a flag to stop results being re-selected if user has changed search parameters resultsViewModel.SearchParameters.HasUserChangedSearchParameters = true; } resultsViewModel.SearchParameters.PreviousPostcode = viewModel.Postcode; resultsViewModel.SearchParameters.PreviousSelectedRouteId = viewModel.SelectedRouteId; return(resultsViewModel); }