BudgetAnalyser.Engine.Services.WidgetService.PrepareWidgets C# (CSharp) Метод

PrepareWidgets() публичный Метод

Prepares the widgets.
public PrepareWidgets ( IEnumerable storedStates ) : IEnumerable
storedStates IEnumerable The stored application state for widgets.
Результат IEnumerable
        public IEnumerable<WidgetGroup> PrepareWidgets(IEnumerable<WidgetPersistentState> storedStates)
        {
            if (storedStates != null)
            {
                List<Widget> widgets = this.widgetRepo.GetAll().ToList();
                foreach (var widgetState in storedStates)
                {
                    var stateClone = widgetState;
                    var multiInstanceState = widgetState as MultiInstanceWidgetState;
                    if (multiInstanceState != null)
                    {
                        CreateMultiInstanceWidget(multiInstanceState);
                    }
                    else
                    {
                        // Ordinary widgets will already exist in the repository as they are single instance per class.
                        var typedWidget = widgets.FirstOrDefault(w => w.GetType().FullName == stateClone.WidgetType);
                        if (typedWidget != null)
                        {
                            typedWidget.Visibility = widgetState.Visible;
                        }
                    }
                }
            }

            return this.widgetRepo.GetAll()
                .GroupBy(w => w.Category)
                .Select(
                    group => new WidgetGroup
                    {
                        Heading = group.Key,
                        Widgets = new ObservableCollection<Widget>(group.OrderBy(w => w.Sequence)),
                        Sequence = GroupSequence[group.Key]
                    })
                .OrderBy(g => g.Sequence).ThenBy(g => g.Heading);
        }