コード例 #1
0
        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"));
        }
コード例 #2
0
 private void ParseHouseMateExpenseFields(HouseMateExpense houseMateExpense, HouseMateExpenseBindingModel model)
 {
     houseMateExpense.ExpenseId    = model.ExpenseId;
     houseMateExpense.HouseMateId  = model.HouseMateId;
     houseMateExpense.IsMarkedPaid = model.IsMarkedPaid;
     houseMateExpense.IsPaid       = model.IsPaid;
 }
コード例 #3
0
        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);
        }
コード例 #4
0
 public void UpdateHouseMateExpense(HouseMateExpense houseMateExpense)
 {
     _database.HouseMateExpenses.Update(houseMateExpense);
     _database.SaveChanges();
 }