Пример #1
0
        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);
        }
Пример #2
0
        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;
        }