Beispiel #1
0
    public int CheckCompleteTransaction(string sessionId, Transaction transaction, TransactionType type)
    {
        User user = GetUserInformation(sessionId);

        if (user == null)
        {
            return(transaction.quantity);
        }

        if (user == null ||
            (user.availableDiginotes < transaction.quantity && type == TransactionType.SELL) ||
            (user.balance < transaction.quantity * GetDiginoteValue() && type == TransactionType.BUY))
        {
            return(-1);
        }

        List <Transaction> transactions = _db.GetUnfufilledTransactions(transaction.quantity, type);

        foreach (Transaction t in transactions)
        {
            if (t.seller == null)
            {
                t.seller = user.username;
            }
            else if (t.buyer == null)
            {
                t.buyer = user.username;
            }

            bool success = _db.CompleteTransaction(t, transaction.quantity, type);
            if (success)
            {
                Console.WriteLine("Success completing transaction");
                _db.IncrementQuantity();
                transaction.quantity -= t.quantity;
                if (transaction.quantity <= 0)
                {
                    return(0);
                }
            }
        }

        return(transaction.quantity);
    }