public IHttpActionResult Patch(int id, [FromBody] JsonPatchDocument <DTO.ExpenseGroup> expenseGroupPatchDocument)
        {
            try
            {
                if (expenseGroupPatchDocument == null)
                {
                    return(this.BadRequest());
                }

                var expenseGroup = _repository.GetExpenseGroup(id);
                if (expenseGroup == null)
                {
                    return(this.NotFound());
                }

                var eg = _expenseGroupFactory.CreateExpenseGroup(expenseGroup);

                expenseGroupPatchDocument.ApplyTo(eg);

                var result = _repository.UpdateExpenseGroup(_expenseGroupFactory.CreateExpenseGroup(eg));

                if (result.Status == RepositoryActionStatus.Updated)
                {
                    var patchedExpenseGroup = _expenseGroupFactory.CreateExpenseGroup(result.Entity);
                    return(this.Ok(patchedExpenseGroup));
                }

                return(this.BadRequest());
            }
            catch (Exception)
            {
                return(this.InternalServerError());
            }
        }
Example #2
0
 public IHttpActionResult Get(int id)
 {
     try
     {
         var expenseGroup = _repository.GetExpenseGroup(id);
         if (expenseGroup == null)
         {
             return(NotFound());
         }
         return(Ok(_expenseGroupFactory.CreateExpenseGroup(expenseGroup)));
     }
     catch (Exception e)
     {
         return(InternalServerError());
     }
 }
Example #3
0
        public IHttpActionResult Get(int id, string fields = null)
        {
            try
            {
                bool          includeExpenses = false;
                List <string> lstOfFields     = new List <string>();

                // we should include expenses when the fields-string contains "expenses"
                if (fields != null)
                {
                    lstOfFields     = fields.ToLower().Split(',').ToList();
                    includeExpenses = lstOfFields.Any(f => f.Contains("expenses"));
                }


                Repository.Entities.ExpenseGroup expenseGroup;
                if (includeExpenses)
                {
                    expenseGroup = _repository.GetExpenseGroupWithExpenses(id);
                }
                else
                {
                    expenseGroup = _repository.GetExpenseGroup(id);
                }


                if (expenseGroup != null)
                {
                    return(Ok(_expenseGroupFactory.CreateDataShapedObject(expenseGroup, lstOfFields)));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
Example #4
0
        public IHttpActionResult Get(int id, string fields = null)
        {
            try
            {
                bool          includeExpenses = false;
                List <string> lstOfFields     = new List <string>();

                // we should include expenses when the fields-string contains "expenses"
                if (fields != null)
                {
                    lstOfFields     = fields.ToLower().Split(',').ToList();
                    includeExpenses = lstOfFields.Any(f => f.Contains("expenses"));
                }


                Repository.Entities.ExpenseGroup expenseGroup;
                if (includeExpenses)
                {
                    expenseGroup = _repository.GetExpenseGroupWithExpenses(id);
                }
                else
                {
                    expenseGroup = _repository.GetExpenseGroup(id);
                }

                if (expenseGroup != null)
                {
                    // We want to send over the models from our DTO project. So we need to map these entities using the factory to their corresponding DTO models. This statement will return an expense DTO.
                    return(Ok(_expenseGroupFactory.CreateDataShapedObject(expenseGroup, lstOfFields)));
                }
                else
                {
                    return(NotFound());
                }
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }
        public IHttpActionResult Patch(int id, [FromBody] JsonPatchDocument <DTO.ExpenseGroup> expenseGroupPatchDocument)
        {
            try
            {
                if (expenseGroupPatchDocument == null)
                {
                    return(BadRequest());
                }

                var expenseGroup = _repository.GetExpenseGroup(id);
                if (expenseGroup == null)
                {
                    return(NotFound());
                }

                // map
                var eg = _expenseGroupFactory.CreateExpenseGroup(expenseGroup);

                // apply changes to the DTO
                expenseGroupPatchDocument.ApplyTo(eg);

                // map the DTO with applied changes to the entity, & update
                var result = _repository.UpdateExpenseGroup(_expenseGroupFactory.CreateExpenseGroup(eg));

                if (result.Status == RepositoryActionStatus.Updated)
                {
                    // map to dto
                    var patchedExpenseGroup = _expenseGroupFactory.CreateExpenseGroup(result.Entity);
                    return(Ok(patchedExpenseGroup));
                }

                return(BadRequest());
            }
            catch (Exception)
            {
                return(InternalServerError());
            }
        }