BudgetAnalyser.Engine.Services.DashboardService.RemoveUserDefinedWidget C# (CSharp) Method

RemoveUserDefinedWidget() public method

public RemoveUserDefinedWidget ( IUserDefinedWidget widgetToRemove ) : void
widgetToRemove IUserDefinedWidget
return void
        public void RemoveUserDefinedWidget(IUserDefinedWidget widgetToRemove)
        {
            var fixedProjectWidget = widgetToRemove as FixedBudgetMonitorWidget;
            if (fixedProjectWidget != null)
            {
                // Reassign transactions to Surplus
                var projectBucket =
                    this.bucketRepository.GetByCode(fixedProjectWidget.BucketCode) as FixedBudgetProjectBucket;
                if (projectBucket == null)
                {
                    throw new InvalidOperationException(
                        "The fixed project bucket provided doesn't actually appear to be a Fixed Budget Project Bucket");
                }

                projectBucket.Active = false;
                fixedProjectWidget.Visibility = false;
                // Not sure I really want to do this. It will mean this data is gone forever.
                // fixedProjectWidget.Statement.ReassignFixedProjectTransactions(projectBucket, this.bucketRepository.SurplusBucket);

                // No need to remove it from the Budget, the Budget is actually not aware of these fixed project buckets in any way.
                // this.bucketRepository.RemoveFixedBudgetProject(projectBucket);
                this.budgetRepository.SaveAsync(); // Bucket Repo data is stored in the budget repo however.
                return;
            }

            this.widgetService.Remove(widgetToRemove);

            var baseWidget = (Widget) widgetToRemove;
            var widgetGroup = WidgetGroups.FirstOrDefault(group => group.Heading == baseWidget.Category);

            widgetGroup?.Widgets.Remove(baseWidget);
        }