public override BudgetBucket GetByCode(string code)
{
if (code.IsNothing())
{
return null;
}
if (code.StartsWith("INCOME"))
{
return GetOrCreateNew(code, () => new IncomeBudgetBucket(code, code));
}
if (string.CompareOrdinal(code, SurplusBucket.Code) == 0)
{
return SurplusBucket;
}
if (code.StartsWith(this.projectPrefix))
{
return GetOrCreateNew(code, () => new FixedBudgetProjectBucket(code, code, 100000M));
}
return GetOrCreateNew(code, () => new SavedUpForExpenseBucket(code, code));
}