Beispiel #1
0
        public Wallet UpdateWalletPurchase(int userId, decimal balance)
        {
            using (var session = _dbSessionService.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var result = _walletQueryService.QueryWallets(session, userId);

                    var resultArray = result[0];

                    if (resultArray.Balance - balance < 0)
                    {
                        throw new Exception("insufficient balance");
                    }

                    resultArray.Balance  = resultArray.Balance - balance;
                    resultArray.Holdings = resultArray.Holdings + balance;

                    session.SaveOrUpdate(resultArray);

                    transaction.Commit();

                    return(result[0]);
                }
            }
        }
Beispiel #2
0
        public void should_update_wallet_withdrawal_return()
        {
            var userId = TestData.GenerateRandomInt();

            var balance = 100.90m;

            var session = Substitute.For <ISession>();

            _dbSessionService.OpenSession().Returns(session);


            _walletQueryService.QueryWallets(Arg.Any <ISession>(), Arg.Any <int>())
            .Returns(new List <Wallet>
            {
                new Wallet
                {
                    UserId   = userId,
                    Balance  = 15979.90m,
                    Holdings = 100
                }
            });

            _sut.UpdateWalletPurchase(userId, balance);
        }
        public Wallet UpdateWalletSale(int userId, decimal balance)
        {
            using (var session = _dbSessionService.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var result = _walletQueryService.QueryWallets(session, userId);

                    result[0].Balance  = result[0].Balance + balance;
                    result[0].Holdings = result[0].Holdings - balance;

                    session.SaveOrUpdate(result[0]);

                    transaction.Commit();

                    return(result[0]);
                }
            }
        }