/// <summary>
        /// Get deposit history for an asset
        /// </summary>
        /// <param name="asset">string of asset</param>
        /// <param name="status">deposit status (default all)</param>
        /// <param name="startTime">Start of date range</param>
        /// <param name="endTime">End of date range</param>
        /// <returns>Array of deposits</returns>
        public async Task <Deposit[]> GetDepositHistory(string asset, DepositStatus status, DateTime startTime, DateTime endTime)
        {
            var start = _dtHelper.UTCtoUnixTime(startTime);
            var end   = _dtHelper.UTCtoUnixTime(endTime);

            return(await OnGetDepositHistory(asset, (int)status, start, end, 0));
        }
Beispiel #2
0
 public Deposit(long id, string brokerId, string clientId, string walletId, string transactionId, decimal amount,
                string assetSymbol, string comment, string integration, string txid, DepositStatus status,
                string matchingEngineId, string lastError, int retriesCount, DateTime eventDate, DateTime updateDate,
                decimal feeAmount, string feeAssetSymbol, string last4, string depositNetwork)
 {
     Id               = id;
     BrokerId         = brokerId;
     ClientId         = clientId;
     WalletId         = walletId;
     TransactionId    = transactionId;
     Amount           = amount;
     AssetSymbol      = assetSymbol;
     Comment          = comment;
     Integration      = integration;
     Txid             = txid;
     Status           = status;
     MatchingEngineId = matchingEngineId;
     LastError        = lastError;
     RetriesCount     = retriesCount;
     EventDate        = eventDate;
     UpdateDate       = updateDate;
     FeeAmount        = feeAmount;
     FeeAssetSymbol   = feeAssetSymbol;
     CardLast4        = last4;
     Network          = depositNetwork;
 }
        public void Throws()
        {
            var                 asset   = Asset.BTC;
            const decimal       amount  = 1.23m;
            var                 time    = DateTimeOffset.FromUnixTimeMilliseconds(DateTime.UtcNow.ToTimestamp()).UtcDateTime;
            const DepositStatus status  = DepositStatus.Success;
            const string        address = "0x12345678901234567890";

            Assert.Throws <ArgumentNullException>("asset", () => new Deposit(null, amount, time, status, address));
            Assert.Throws <ArgumentException>("amount", () => new Deposit(asset, -1, time, status, address));
            Assert.Throws <ArgumentException>("amount", () => new Deposit(asset, 0, time, status, address));
            Assert.Throws <ArgumentNullException>("address", () => new Deposit(asset, amount, time, status, null));
            Assert.Throws <ArgumentNullException>("address", () => new Deposit(asset, amount, time, status, string.Empty));
        }
Beispiel #4
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="asset">The asset.</param>
        /// <param name="amount">The amount.</param>
        /// <param name="time">The time.</param>
        /// <param name="status">The status.</param>
        /// <param name="address">The address.</param>
        /// <param name="addressTag">The address tag.</param>
        /// <param name="txId">The transaction ID.</param>
        public Deposit(string asset, decimal amount, DateTime time, DepositStatus status, string address, string addressTag = null, string txId = null)
        {
            Throw.IfNullOrWhiteSpace(asset, nameof(asset));
            Throw.IfNullOrWhiteSpace(address, nameof(address));

            if (amount <= 0)
            {
                throw new ArgumentException($"{nameof(Deposit)}: amount must be greater than 0.", nameof(amount));
            }

            Asset      = asset.FormatSymbol();
            Amount     = amount;
            Time       = time;
            Status     = status;
            Address    = address;
            AddressTag = addressTag;
            TxId       = txId;
        }
        protected override OpResult _Store(DepositStatus _obj)
        {
            if (_obj == null)
            {
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.ObjectIsNull, _obj, "DepositStatus object is not created as it is null"));
            }

            if (Exists(_obj))
            {
                ExecuteNonQuery(GetQuery_UpdateQuery(_obj));
                return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Updated, _obj));
            }

            ExecuteNonQuery(GetQuery_InsertQuery(_obj));
            _obj.FromDb = true;

            return(OpResult.NotifyStoreAction(OpResult.ResultStatus.Created, _obj));
        }
Beispiel #6
0
        public void Properties()
        {
            var                 asset      = Asset.BTC;
            const decimal       amount     = 1.23m;
            var                 timestamp  = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
            const DepositStatus status     = DepositStatus.Success;
            const string        address    = "0x12345678901234567890";
            const string        addressTag = "ABCDEF";
            const string        txId       = "21436587092143658709";

            var deposit = new Deposit(asset, amount, timestamp, status, address, addressTag, txId);

            Assert.Equal(asset, deposit.Asset);
            Assert.Equal(amount, deposit.Amount);
            Assert.Equal(timestamp, deposit.Timestamp);
            Assert.Equal(status, deposit.Status);
            Assert.Equal(address, deposit.Address);
            Assert.Equal(addressTag, deposit.AddressTag);
            Assert.Equal(txId, deposit.TxId);
        }
Beispiel #7
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="asset">The asset.</param>
        /// <param name="amount">The amount.</param>
        /// <param name="timestamp">The timestamp.</param>
        /// <param name="status">The status.</param>
        /// <param name="address">The address.</param>
        /// <param name="addressTag">The address tag.</param>
        /// <param name="txId">The transaction ID.</param>
        public Deposit(string asset, decimal amount, long timestamp, DepositStatus status, string address, string addressTag = null, string txId = null)
        {
            Throw.IfNullOrWhiteSpace(asset, nameof(asset));
            Throw.IfNullOrWhiteSpace(address, nameof(address));

            if (amount <= 0)
            {
                throw new ArgumentException($"{nameof(Deposit)} amount must be greater than 0.", nameof(amount));
            }
            if (timestamp <= 0)
            {
                throw new ArgumentException($"{nameof(Deposit)} timestamp must be greater than 0.", nameof(timestamp));
            }

            Asset      = asset;
            Amount     = amount;
            Timestamp  = timestamp;
            Status     = status;
            Address    = address;
            AddressTag = addressTag;
            TxId       = txId;
        }
        public void Serialization()
        {
            var                 asset      = Asset.BTC;
            const decimal       amount     = 1.23m;
            var                 time       = DateTimeOffset.FromUnixTimeMilliseconds(DateTime.UtcNow.ToTimestamp()).UtcDateTime;
            const DepositStatus status     = DepositStatus.Success;
            const string        address    = "0x12345678901234567890";
            const string        addressTag = "ABCDEF";
            const string        txId       = "21436587092143658709";

            var deposit = new Deposit(asset, amount, time, status, address, addressTag, txId);

            var json = JsonConvert.SerializeObject(deposit);

            deposit = JsonConvert.DeserializeObject <Deposit>(json);

            Assert.Equal(asset, deposit.Asset);
            Assert.Equal(amount, deposit.Amount);
            Assert.Equal(time, deposit.Time);
            Assert.Equal(status, deposit.Status);
            Assert.Equal(address, deposit.Address);
            Assert.Equal(addressTag, deposit.AddressTag);
            Assert.Equal(txId, deposit.TxId);
        }
Beispiel #9
0
        private async Task <bool> InsertDeposit(IDataAccess context, Guid userId, int currencyId, TransactionData depositData,
                                                DepositType type, DepositStatus status)
        {
            try
            {
                Log.Message(LogLevel.Debug, "[InsertDeposit] - Inserting new deposit. CurrencyId: {0}, TxId: {1}", currencyId,
                            depositData.Txid);
                int rowAffected = await context.ExecuteAsync(_insertDeposit, new
                {
                    UserId          = userId,
                    CurrencyId      = currencyId,
                    Amount          = depositData.Amount,
                    TxId            = depositData.Txid,
                    Confirmations   = depositData.Confirmations,
                    DepositTypeId   = type,
                    DepositStatusId = status,
                    TimeStamp       = depositData.Time == 0
                                                ? DateTime.UtcNow
                                                : depositData.Time.ToDateTime()
                });

                if (rowAffected > 0)
                {
                    Log.Message(LogLevel.Debug, "[InsertDeposit] - New deposit inserted. CurrencyId: {0}, TxId: {1}", currencyId,
                                depositData.Txid);
                    return(true);
                }
                Log.Message(LogLevel.Error, "[InsertDeposit] - Failed to insert deposit, CurrencyId: {0}, TxId: {1}", currencyId,
                            depositData.Txid);
            }
            catch (Exception ex)
            {
                LogError(ex, "InsertDeposit", "Failed to insert deposit, CurrencyId: {0}, TxId: {1}", currencyId, depositData.Txid);
            }
            return(false);
        }
 private DbUpdateStatement GetQuery_UpdateQuery(DepositStatus _obj)
 {
     return(DbMgr.CreateUpdateClause("DepositStatus", GetFields(_obj), "DepositStatusID", _obj.DepositStatusID));
 }
        private DbInsertStatement GetQuery_InsertQuery(DepositStatus _obj)
        {
            Dictionary <string, DbFieldEntry> fields = GetFields(_obj);

            return(DbMgr.CreateInsertClause("DepositStatus", fields));
        }
 public DepositEntity(long id, string brokerId, string clientId, string walletId, string transactionId,
                      decimal amount, string assetSymbol, string comment, string integration, string txid, DepositStatus status,
                      string matchingEngineId, string lastError, int retriesCount, DateTime eventDate, DateTime updateDate,
                      decimal feeAmount, string feeAssetSymbol, string last4, string depositNetwork) : base(id,
                                                                                                            brokerId,
                                                                                                            clientId, walletId, transactionId, amount, assetSymbol, comment, integration, txid, status,
                                                                                                            matchingEngineId, lastError, retriesCount, eventDate, updateDate, feeAmount,
                                                                                                            feeAssetSymbol, last4, depositNetwork)
 {
 }
Beispiel #13
0
        public void Can_deposit_amount(decimal balance, decimal depositAmount, decimal finalBalance, DepositStatus expectedStatus, string expectedErrorMessage)
        {
            var card = new CashCard(TestPin, _pinValidationService);

            card.Deposit(balance);

            var response = card.Deposit(depositAmount);

            Assert.That(response.Status, Is.EqualTo(expectedStatus));
            Assert.That(response.ErrorMessage, Is.EqualTo(expectedErrorMessage));
            Assert.That(card.Balance, Is.EqualTo(finalBalance));
        }
Beispiel #14
0
        private async Task <bool> UpdateDeposit(IDataAccess context, int depositId, int confirmations, DepositStatus status)
        {
            try
            {
                Log.Message(LogLevel.Debug, "[UpdateDeposit] - Updating deposit. DepositId: {0}, Status: {1} Conformations: {2}",
                            depositId, status, confirmations);
                int rowAffected = await context.ExecuteAsync(_updateDeposit, new
                {
                    DepositId       = depositId,
                    DepositStatusId = status,
                    Confirmations   = confirmations,
                });

                if (rowAffected > 0)
                {
                    Log.Message(LogLevel.Debug, "[UpdateDeposit] - Deposit Updated. DepositId: {0}, Status: {1} Conformations: {2}",
                                depositId, status, confirmations);
                    return(true);
                }
                Log.Message(LogLevel.Error,
                            "[UpdateDeposit] - Failed to update deposit. DepositId: {0}, Status: {1} Conformations: {2}", depositId, status,
                            confirmations);
            }
            catch (Exception ex)
            {
                LogError(ex, "UpdateDeposit", "Failed to update deposit to '{0}', DepositId: {1}", status, depositId);
            }
            return(false);
        }
 /// <summary>
 /// Get deposit history for an asset
 /// </summary>
 /// <param name="asset">string of asset</param>
 /// <param name="status">deposit status (default all)</param>
 /// <returns>Array of deposits</returns>
 public async Task <Deposit[]> GetDepositHistory(string asset, DepositStatus status = DepositStatus.all)
 {
     return(await OnGetDepositHistory(asset, (int)status, 0, 0, 0));
 }
 /// <summary>
 /// Get all deposit history
 /// </summary>
 /// <param name="status">deposit status (default all)</param>
 /// <returns>Array of deposits</returns>
 public async Task <Deposit[]> GetDepositHistory(DepositStatus status = DepositStatus.all)
 {
     return(await OnGetDepositHistory("", (int)status, 0, 0, 0));
 }
Beispiel #17
0
 /// <summary>
 /// Get historic withdrawal history (KuCoin v1)
 /// </summary>
 /// <param name="symbol">Symbol of currency</param>
 /// <param name="status">Withdrawal status</param>
 /// <param name="page">Page number</param>
 /// <param name="pageSize">Page size</param>
 /// <returns>Paged collection of withdrawals</returns>
 public static async Task <PagedResponse <List <Withdrawal> > > GetHistoricWithdrawals(this IKuCoinDotNet service, string symbol, DepositStatus status, int page = 0, int pageSize = 0)
 {
     return(await service.GetHistoricWithdrawals(symbol : symbol, status : status, page : page, pageSize : pageSize));
 }
Beispiel #18
0
 public DepositResponse(DepositStatus status, string errorMessage = "")
 {
     Status       = status;
     ErrorMessage = errorMessage;
 }