コード例 #1
0
 private MemberAccount CreateAccount(MemberAccountAddingClaim claim)
 {
     return(new MemberAccount
     {
         Balance = claim.Amount,
         CurrencyCode = claim.Currency,
         UserId = claim.UserId
     });
 }
コード例 #2
0
        public void AddOrUpdate(MemberAccountAddingClaim claim)
        {
            var accounts = _unitOfWork.MemberAccounts.GetByUser(claim.UserId);
            var account  = accounts.FirstOrDefault(x => x.CurrencyCode == claim.Currency);

            if (account == null)
            {
                var newAccount = CreateAccount(claim);
                _unitOfWork.MemberAccounts.Add(newAccount);
                _unitOfWork.Commit();
                return;
            }
            account.Balance += claim.Amount;
            _unitOfWork.MemberAccounts.Update(account);
            _unitOfWork.Commit();
        }
コード例 #3
0
        public void WithdrawMoney(MemberAccountAddingClaim claim)
        {
            var accounts = _unitOfWork.MemberAccounts.GetByUser(claim.UserId);
            var account  = accounts.FirstOrDefault(x => x.CurrencyCode == claim.Currency);

            if (account == null)
            {
                throw new InvalidOperationException("Account not excists.");
            }

            if (account.Balance - claim.Amount < 0)
            {
                throw new InvalidOperationException("Insufficient funds.");
            }

            account.Balance -= claim.Amount;
            _unitOfWork.MemberAccounts.Update(account);
            _unitOfWork.Commit();
        }