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