public IHttpActionResult Patch(int id, [FromBody] JsonPatchDocument <ExpenseGroupDTO> expenseGroupPatchDocument) { try { if (expenseGroupPatchDocument == null) { return(BadRequest()); } var expenseGroup = _repo.GetExpenseGroup(id); if (expenseGroup == null) { return(NotFound()); } var eg = ExpenseGroupFactory.CreateExpenseGroupDTO(expenseGroup); expenseGroupPatchDocument.ApplyTo(eg); var result = _repo.UpdateExpenseGroup(ExpenseGroupFactory.CreateExpenseGroupEntity(eg)); if (result.Status == RepositoryActionStatus.Updated) { var patchedExpenseGroup = ExpenseGroupFactory.CreateExpenseGroupDTO(result.Entity); return(Ok(patchedExpenseGroup)); } return(BadRequest()); } catch (Exception) { return(InternalServerError()); } }
public IHttpActionResult Post([FromBody] ExpenseGroupDTO expensegroup) { try { if (expensegroup == null) { return(BadRequest()); } else { //no reverse mapping with AutoMap var eg = ExpenseGroupFactory.CreateExpenseGroupEntity(expensegroup); var result = _repo.InsertExpenseGroup(eg); if (result.Status == RepositoryActionStatus.Created) { var newExpenseGroup = ExpenseGroupFactory.CreateExpenseGroupDTO(result.Entity); return(Created <ExpenseGroupDTO>(Request.RequestUri + "/" + newExpenseGroup.Id.ToString(), newExpenseGroup)); } return(BadRequest()); } } catch (Exception) { return(InternalServerError()); } }
public IHttpActionResult Put(int id, [FromBody] ExpenseGroupDTO expensegroup) { try { if (expensegroup == null) { return(BadRequest()); } var eg = ExpenseGroupFactory.CreateExpenseGroupEntity(expensegroup); var result = _repo.UpdateExpenseGroup(eg); if (result.Status == RepositoryActionStatus.Updated) { var updatedExpenseGroup = ExpenseGroupFactory.CreateExpenseGroupDTO(result.Entity); return(Ok(updatedExpenseGroup)); } else if (result.Status == RepositoryActionStatus.NotFound) { return(NotFound()); } return(BadRequest()); } catch (Exception) { return(InternalServerError()); } }
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")); } ExpenseGroup expenseGroup = null; if (includeExpenses) { expenseGroup = _repo.GetExpenseGroupWithExpenses(id); } else { expenseGroup = _repo.GetExpenseGroup(id); } if (expenseGroup != null) { return(Ok(ExpenseGroupFactory.CreateDataShapedObjectExpenseGroup(expenseGroup, lstOfFields))); } else { return(NotFound()); } } catch (Exception) { return(InternalServerError()); } }