public string SplitBill(GroupKey g, double amount) { var group = _groupsRepository.GetGroup(g); var members = group.Users; var b = new Bill(g, amount); _billsRepository.AddBill(b); var no_members = group.Users.Count + 1; double to_pay = amount / no_members; //members.Add(g.PhoneNumber); _billsRepository.AddBillMemberAmount(members, b, to_pay); string pay = null; string names = null; foreach (string user_no in members) { var us = _userRepository.GetUserByPhoneNumber(user_no); var u = new UserLeftAmount(); u.User = us; if (us.Amount < to_pay) { names += us.FirstName + " " + us.LastName + ", "; } else { u.Amount = to_pay; } pay = pay + u.User.FirstName + " " + u.User.LastName + ": " + to_pay.ToString() + '\n'; } return(pay); }
public void BeforeSplitBill(GroupKey g, double amount) { var group = _groupsRepository.GetGroup(g); var members = group.Users; members.Add(g.PhoneNumber); var no_members = group.Users.Count; float to_pay = (float)amount / (float)no_members; int not_fully_paying = 0; string names = null; foreach (string user_no in members) { var us = _userRepository.GetUserByPhoneNumber(user_no); var u = new UserLeftAmount(); u.User = us; if (us.Amount < to_pay) { not_fully_paying++; names += us.FirstName + " " + us.LastName + ", "; } else { u.Amount = to_pay; } } if (not_fully_paying != 0) { throw new Exception("Users: " + names + "don't have enough money!"); } //return paying_list; }