public void Pay(PayModel payModel) { var user = _userRepository.GetUserByPhoneNumber(payModel.PhoneNumber); if (user.Amount < payModel.Amount) { throw new Exception("Not enough money! Top up first."); } else { if (payModel.Amount - (int)payModel.Amount != 0) { double x = Math.Ceiling(payModel.Amount); double change = x - payModel.Amount; _userRepository.AddToUserPocket(payModel.PhoneNumber, change); } //user.Amount = user.Amount - (int)Math.Ceiling(payModel.Amount); //_userRepository.UpdateUser(user); var l = new List <string>(); l.Add(user.PhoneNumber); var b = new Bill(new GroupKey("11", "213"), payModel.Amount); _billsRepository.AddBill(b); _billsRepository.AddBillMemberAmount(l, b, payModel.Amount); } }
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); }