public bool Post([FromBody] BudgetDTO data) { if (data != null) { Budget budget = Budget.NewBudget(); if (data.BudgetID > 0) { budget = Budget.GetByBudgetID(data.BudgetID); } else { budget.CreatedOn = DateTime.Now; budget.CreatedBy = CurrentUserID; } data.CopyDTO(budget); if (budget.IsNew) { budget.IsActive = true; } else { if (budget.IsDirty) { budget.UpdatedOn = DateTime.Now; budget.UpdatedBy = CurrentUserID; } } foreach (BudgetLineDTO dataBudgetLine in data.BudgetLines) { BudgetLine budgetLine = budget.BudgetLines.FirstOrDefault(x => x.BudgetLineID == dataBudgetLine.BudgetLineID); if (budgetLine == null) { budgetLine = BudgetLine.NewBudgetLine(); budgetLine.CreatedOn = DateTime.Now; budgetLine.CreatedBy = CurrentUserID; budget.BudgetLines.Add(budgetLine); } dataBudgetLine.CopyDTO(budgetLine); if (budgetLine.IsNew) { budgetLine.IsActive = true; } else { if (budgetLine.IsDirty) { budgetLine.UpdatedOn = DateTime.Now; budgetLine.UpdatedBy = CurrentUserID; } } } budget.Save(); return(true); } return(false); }