public ActionResult <string> GetTransactionByAddress(string idAddress, string currency, string type) { try { var checkIdAddress = CheckIdAddress(idAddress); if (!string.IsNullOrEmpty(checkIdAddress)) { return(CreateDataError(checkIdAddress)); } var apiKey = (ApiKey)RouteData.Values[Requests.KEY_PASS_DATA_API_KEY_MODEL]; var checkCurrency = CheckCurrency(currency, apiKey); if (!string.IsNullOrEmpty(checkCurrency)) { return(checkCurrency); } if (!apiKey.Permissions.Contains(Permissions.READ_TRANSACTIONS)) { return(CreateDataError(MessageError.READ_TRANSACION_NOT_PERMISSION)); } List <BlockchainTransaction> listTransaction = null; switch (currency) { case CryptoCurrency.BTC: var btcAddressRepository = new BitcoinAddressRepository(VakapayRepositoryFactory.GetOldConnection()); var btcAddress = btcAddressRepository.FindById(idAddress); if (btcAddress?.Id != null) { if (string.Equals(type, Requests.TYPE_DEPOSIT)) { var btcDepositRepository = new BitcoinDepositTransactionRepository( VakapayRepositoryFactory.GetOldConnection()); listTransaction = btcDepositRepository.FindTransactionsToAddress(btcAddress.Address); } else if (string.Equals(type, Requests.TYPE_WITH_DRAW)) { var btcWithdrawRepository = new BitcoinWithdrawTransactionRepository( VakapayRepositoryFactory.GetOldConnection()); listTransaction = btcWithdrawRepository.FindTransactionsFromAddress(btcAddress.Address); } } break; case CryptoCurrency.ETH: var ethAddressRepository = new BitcoinAddressRepository(VakapayRepositoryFactory.GetOldConnection()); var ethAddress = ethAddressRepository.FindById(idAddress); if (ethAddress?.Id != null) { if (string.Equals(type, Requests.TYPE_DEPOSIT)) { var ethDepositRepository = new EthereumDepositTransactionRepository( VakapayRepositoryFactory.GetOldConnection()); listTransaction = ethDepositRepository.FindTransactionsToAddress(ethAddress.Address); } else if (string.Equals(type, Requests.TYPE_WITH_DRAW)) { var ethWithdrawRepository = new EthereumWithdrawnTransactionRepository( VakapayRepositoryFactory.GetOldConnection()); listTransaction = ethWithdrawRepository .FindTransactionsFromAddress(ethAddress.Address); } } break; case CryptoCurrency.VAKA: var vakaAddressRepository = new BitcoinAddressRepository(VakapayRepositoryFactory.GetOldConnection()); var vakaAddress = vakaAddressRepository.FindById(idAddress); if (vakaAddress?.Id != null) { if (string.Equals(type, Requests.TYPE_DEPOSIT)) { var vakaDepositRepository = new VakacoinDepositTransactionRepository( VakapayRepositoryFactory.GetOldConnection()); listTransaction = vakaDepositRepository.FindTransactionsToAddress(vakaAddress.Address); } else if (string.Equals(type, Requests.TYPE_WITH_DRAW)) { var vakaWithdrawRepository = new VakacoinWithdrawTransactionRepository( VakapayRepositoryFactory.GetOldConnection()); listTransaction = vakaWithdrawRepository .FindTransactionsFromAddress(vakaAddress.Address); } } break; default: return(CreateDataError(MessageError.PARAM_INVALID)); } return(listTransaction != null ? CreateDataSuccess(JsonConvert.SerializeObject(listTransaction)) : CreateDataError(MessageError.DATA_NOT_FOUND)); } catch (Exception) { return(CreateDataError(MessageError.DATA_NOT_FOUND)); } }
public ReturnObject GetTransactions(int?limit = null) { try { var email = User.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault(); var query = new Dictionary <string, string> { { "Email", email } }; var userModel = _userBusiness.GetUserInfo(query); if (userModel == null) { //return error return(new ReturnObject { Status = Status.STATUS_ERROR, Message = "User not exist in DB" }); } var userId = userModel.Id; var bitcoinDepositTrxRepo = new BitcoinDepositTransactionRepository(_repositoryFactory.GetOldConnection()); var bitcoinWithdrawTrxRepo = new BitcoinWithdrawTransactionRepository(_repositoryFactory.GetOldConnection()); var ethereumDepositTrxRepo = new EthereumDepositTransactionRepository(_repositoryFactory.GetOldConnection()); var ethereumWithdrawTrxRepo = new EthereumWithdrawnTransactionRepository(_repositoryFactory.GetOldConnection()); var vakacoinDepositTrxRepo = new VakacoinDepositTransactionRepository(_repositoryFactory.GetOldConnection()); var vakacoinWithdrawTrxRepo = new VakacoinWithdrawTransactionRepository(_repositoryFactory.GetOldConnection()); var activities = new List <RecentActivity>(); activities.AddRange(ProcessTransactions(bitcoinDepositTrxRepo.FindTransactionsByUserId(userId), DashboardConfig.BITCOIN, false)); activities.AddRange(ProcessTransactions(bitcoinWithdrawTrxRepo.FindTransactionsByUserId(userId), DashboardConfig.BITCOIN, true)); activities.AddRange(ProcessTransactions(ethereumDepositTrxRepo.FindTransactionsByUserId(userId), DashboardConfig.ETHEREUM, false)); activities.AddRange(ProcessTransactions(ethereumWithdrawTrxRepo.FindTransactionsByUserId(userId), DashboardConfig.ETHEREUM, true)); activities.AddRange(ProcessTransactions(vakacoinDepositTrxRepo.FindTransactionsByUserId(userId), DashboardConfig.VAKACOIN, false)); activities.AddRange(ProcessTransactions(vakacoinWithdrawTrxRepo.FindTransactionsByUserId(userId), DashboardConfig.VAKACOIN, true)); var sortedActivities = activities.OrderByDescending(o => o.TimeStamp).ToList(); if (limit != null && limit > 0 && limit < sortedActivities.Count) { sortedActivities = sortedActivities.GetRange(0, (int)limit); } return(new ReturnObject { Status = Status.STATUS_SUCCESS, Data = JsonHelper.SerializeObject(sortedActivities) }); } catch (Exception e) { return(new ReturnObject { Status = Status.STATUS_ERROR, Message = e.Message }); } }