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);
}