public BudgetedAmount AddBudgetedAmount(MoneyAmount amount, DateTime validFrom) { var budgetedAmount = BudgetedAmount.Create(this, amount, validFrom); if (BudgetedAmounts.Any(x => x.ValidFrom == budgetedAmount.ValidFrom)) { throw new BusinessException("Another budgeted amount starting at same date"); } BudgetedAmounts.Add(budgetedAmount); return(budgetedAmount); }
public void UpdateBudgetedAmount(BudgetedAmount budgetedAmount) { var amountToUpdate = BudgetedAmounts.FirstOrDefault(x => x == budgetedAmount); if (amountToUpdate == null) { throw new NotFoundException("Budgeted amount does not exist"); } if (BudgetedAmounts.Any(x => x.BudgetedAmountId != budgetedAmount.BudgetedAmountId && x.ValidFrom == budgetedAmount.ValidFrom)) { throw new BusinessException("Another budgeted amount starting at same date"); } amountToUpdate.SetValidFromDate(budgetedAmount.ValidFrom); amountToUpdate.SetAmount(budgetedAmount.Amount); }