public IHttpActionResult Post([FromBody] DTO.Expense expense)
        {
            try
            {
                if (expense == null)
                {
                    return(BadRequest());
                }

                // map
                var exp = _expenseFactory.CreateExpense(expense);

                var result = _repository.InsertExpense(exp);
                if (result.Status == RepositoryActionStatus.Created)
                {
                    // map to dto
                    var newExp = _expenseFactory.CreateExpense(result.Entity);
                    return(Created <DTO.Expense>(Request.RequestUri + "/" + newExp.Id.ToString(), newExp));
                }

                return(BadRequest());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
        public IHttpActionResult Post([FromBody] DTO.Expense expense)
        {
            try
            {
                if (expense == null)
                {
                    return(BadRequest());
                }

                var e      = _expenseFactory.CreateExpense(expense);
                var result = _repository.InsertExpense(e);

                if (result.Status == RepositoryActionStatus.Created)
                {
                    var createdExpense = _expenseFactory.CreateExpense(result.Entity);
                    return(Created(Request.RequestUri + "/" + createdExpense.Id.ToString(), createdExpense));
                }
                else
                {
                    return(BadRequest());
                }
            } catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }