public IActionResult UpdateHouseMateExpense([FromRoute] string houseMateId, int expenseId, [FromBody] HouseMateExpenseBindingModel model) { if (ModelState.IsValid) { if (houseMateId != model.HouseMateId || expenseId != model.ExpenseId) { throw new Exception("one or more route parameters do not match model values"); } try { HouseMateExpense houseMateExpense = _houseMateService.GetHouseMateExpense(houseMateId, expenseId); ParseHouseMateExpenseFields(houseMateExpense, model); _houseMateService.UpdateHouseMateExpense(houseMateExpense); return(Ok(houseMateExpense)); } catch (Exception) { throw new Exception("There was an error updating the HouseMateExpense"); } } return(BadRequest("There was an error updating the HouseMateExpense")); }
private void ParseHouseMateExpenseFields(HouseMateExpense houseMateExpense, HouseMateExpenseBindingModel model) { houseMateExpense.ExpenseId = model.ExpenseId; houseMateExpense.HouseMateId = model.HouseMateId; houseMateExpense.IsMarkedPaid = model.IsMarkedPaid; houseMateExpense.IsPaid = model.IsPaid; }
private List <HouseMateExpense> BuildHouseMateExpenses(Expense expense) { var result = new List <HouseMateExpense>(); List <string> houseMateIds = new List <string>(); if (expense.IsDividedUnevenly) { foreach (var item in expense.UnevenTotals) { var houseMateExpense = new HouseMateExpense() { Expense = expense, HouseMateId = item.Key, CreatorId = expense.CreatorId, Total = item.Value }; result.Add(houseMateExpense); } } else { houseMateIds = _database.HouseMates.Where(hm => hm.HouseId == expense.HouseId) .Select(hm => hm.Id) .ToList(); var total = CalculateEvenTotal(expense.Total, expense.HouseId); foreach (var id in houseMateIds) { var houseMateExpense = new HouseMateExpense() { Expense = expense, HouseMateId = id, CreatorId = expense.CreatorId, Total = total }; result.Add(houseMateExpense); } } return(result); }
public void UpdateHouseMateExpense(HouseMateExpense houseMateExpense) { _database.HouseMateExpenses.Update(houseMateExpense); _database.SaveChanges(); }