async Task LoadContributionAreas() { if (Connectivity.NetworkAccess == NetworkAccess.Internet) { var categories = await MvpApiService.GetContributionAreasAsync().ConfigureAwait(false); if (categories != null) { var result = new List <MvvmHelpers.Grouping <string, ContributionTechnology> >(); foreach (var item in categories.SelectMany(x => x.ContributionAreas)) { result.Add(new MvvmHelpers.Grouping <string, ContributionTechnology>(item.AwardName, item.ContributionTechnology)); } GroupedContributionTechnologies = result; // Editing mode if (contribution.AdditionalTechnologies != null && contribution.AdditionalTechnologies.Any()) { var selectedValues = contribution.AdditionalTechnologies.Select(x => x.Id).ToList(); SelectedContributionTechnologies = result .SelectMany(x => x) .Where(x => selectedValues.Contains(x.Id)) .ToList(); RaisePropertyChanged(nameof(SelectedContributionTechnologies)); } } } }
/// <summary> /// Loads the contribution areas for the contribution. /// </summary> async Task LoadContributionAreas(bool force = false) { try { State = LayoutState.Loading; allCategories = await MvpApiService.GetContributionAreasAsync(force).ConfigureAwait(false); if (allCategories == null) { State = LayoutState.Error; return; } PopulateList(); } catch (Exception ex) { State = LayoutState.Error; AnalyticsService.Report(ex); } finally { if (State != LayoutState.Error) { State = GroupedContributionTechnologies.Count > 0 ? LayoutState.None : LayoutState.Empty; } } }
/// <summary> /// Loads the contribution areas for the contribution. /// </summary> async Task LoadContributionAreas(bool force = false) { try { State = LayoutState.Loading; allCategories = await MvpApiService.GetContributionAreasAsync(force).ConfigureAwait(false); if (allCategories == null) { State = LayoutState.Error; return; } PopulateList(); // Gather suggestions var suggestions = await SuggestionService.GetContributionTechnologySuggestions(); var items = allCategories .SelectMany(x => x.Contributions) .SelectMany(y => y.ContributionArea) .Where(x => suggestions.Contains(x.Id ?? Guid.Empty)); Suggestions = new List <ContributionTechnologyViewModel>(items .Select(x => new ContributionTechnologyViewModel { ContributionTechnology = x })); } catch (Exception ex) { State = LayoutState.Error; AnalyticsService.Report(ex); } finally { if (State != LayoutState.Error) { State = GroupedContributionTechnologies.Count > 0 ? LayoutState.None : LayoutState.Empty; } } }