public IDictionary<string, decimal> PrepareExpenseGraphData([NotNull] BudgetModel budget)
{
if (budget == null)
{
throw new ArgumentNullException(nameof(budget));
}
var surplus = new Expense { Amount = budget.Surplus, Bucket = this.budgetBucketRepository.SurplusBucket };
List<KeyValuePair<string, decimal>> interim =
budget.Expenses.Select(expense => new KeyValuePair<string, decimal>(expense.Bucket.Code, expense.Amount))
.ToList();
interim.Add(new KeyValuePair<string, decimal>(surplus.Bucket.Code, surplus.Amount));
return interim.OrderByDescending(x => x.Value).ToDictionary(e => e.Key, e => e.Value);
}