public IHttpActionResult Get(int id, int?expenseGroupId = null)
        {
            try
            {
                Repository.Entities.Expense expense = null;

                if (expenseGroupId == null)
                {
                    expense = _repository.GetExpense(id);
                }
                else
                {
                    var expensesInGroup = _repository.GetExpenses((int)expenseGroupId);

                    if (expensesInGroup != null)
                    {
                        expense = expensesInGroup.FirstOrDefault(e => e.Id == id);
                    }
                }

                if (expense == null)
                {
                    return(NotFound());
                }
                else
                {
                    return(Ok(_expenseFactory.CreateExpense(expense)));
                }
            } catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
        public IHttpActionResult Get(int id, int?expenseGroupId = null)
        {
            try
            {
                Expense expense = null;
                if (!expenseGroupId.HasValue)
                {
                    expense = _repository.GetExpense(id);
                }
                else
                {
                    var expensesForGroup = _repository.GetExpenses(expenseGroupId.Value);

                    if (expensesForGroup != null)
                    {
                        expense = expensesForGroup.FirstOrDefault(efg => efg.Id == id);
                    }
                }
                if (expense == null)
                {
                    return(NotFound());
                }
                else
                {
                    var expensesResult = _expenseFactory.CreateExpense(expense);
                    return(Ok(expensesResult));
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
Example #3
0
        public IHttpActionResult Get(int id, int? expenseGroupId = null, string fields = null)
        {
            try
            {
                List<string> lstOfFields = new List<string>();

                if (fields != null)
                {
                    lstOfFields = fields.ToLower().Split(',').ToList();
                }

                Repository.Entities.Expense expense = null;

                if (expenseGroupId == null)
                {
                    expense = _repository.GetExpense(id);
                }
                else
                {
                    //get expenseGroup  by expenseGroupId
                    var expensesForGroup = _repository.GetExpenses((int)expenseGroupId);

                    // if the group doesn't exist, we shouldn't try to get the expenses
                    if (expensesForGroup != null)
                    {
                        //get expense  by id
                        expense = expensesForGroup.FirstOrDefault(eg => eg.Id == id);
                    }
                }

                if (expense != null)
                {
                    var returnValue = _expenseFactory.CreateDataShapedObject(expense, lstOfFields);  //field level data shping
                    return Ok(returnValue);
                }
                else
                {
                    return NotFound();
                }

            }
            catch (Exception)
            {
                return InternalServerError();
            }
        }
        public IHttpActionResult Patch(int id, [FromBody] JsonPatchDocument <DTO.Expense> expensePatchDocument)
        {
            try
            {
                // find
                if (expensePatchDocument == null)
                {
                    return(BadRequest());
                }

                var expense = _repository.GetExpense(id);
                if (expense == null)
                {
                    return(NotFound());
                }

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

                // apply changes to the DTO
                expensePatchDocument.ApplyTo(exp);

                // map the DTO with applied changes to the entity, & update
                var result = _repository.UpdateExpense(_expenseFactory.CreateExpense(exp));

                if (result.Status == RepositoryActionStatus.Updated)
                {
                    // map to dto
                    var updatedExpense = _expenseFactory.CreateExpense(result.Entity);
                    return(Ok(updatedExpense));
                }

                return(BadRequest());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
        public IHttpActionResult Get(int id, int?expenseGroupId = null)
        {
            try
            {
                Repository.Entities.Expense expense = null;

                // if expenseGroup wasn't passed in, just get expense
                if (expenseGroupId == null)
                {
                    expense = _repository.GetExpense(id);
                }
                else
                {
                    // if expenseGroup was passed in, only return an expense if the group and id are valid
                    var expensesForGroup = _repository.GetExpenses((int)expenseGroupId);

                    if (expensesForGroup != null)
                    {
                        expense = expensesForGroup.FirstOrDefault(eg => eg.Id == id);
                    }
                }

                if (expense != null)
                {
                    var returnValue = _expenseFactory.CreateExpense(expense);
                    return(Ok(returnValue));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
        public IHttpActionResult Get(int id, int?expenseGroupId = null)
        {
            try
            {
                Repository.Entities.Expense expense = null;

                if (expenseGroupId == null)
                {
                    expense = _repository.GetExpense(id);
                }
                else
                {
                    var expensesForGroup = _repository.GetExpenses((int)expenseGroupId);

                    // if the group doesn't exist, we shouldn't try to get the expenses
                    if (expensesForGroup != null)
                    {
                        expense = expensesForGroup.FirstOrDefault(eg => eg.Id == id);
                    }
                }

                if (expense != null)
                {
                    var returnValue = _expenseFactory.CreateExpense(expense);
                    return(Ok(returnValue));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }