コード例 #1
0
        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));
                    }
                }
            }
        }
コード例 #2
0
        /// <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;
                }
            }
        }
コード例 #3
0
        /// <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;
                }
            }
        }