Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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
                });
            }
        }