Exemplo n.º 1
0
        public async Task <ActionResult <string> > CreateAddress(string currency)
        {
            try
            {
                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.CREATED_ADDRESSES))
                {
                    return(CreateDataError(MessageError.CREATE_TRANSACION_NOT_PERMISSION));
                }

                var userModel      = (User)RouteData.Values[Requests.KEY_PASS_DATA_USER_MODEL];
                var walletBusiness = new WalletBusiness.WalletBusiness(VakapayRepositoryFactory);
                var wallet         = walletBusiness.FindByUserAndNetwork(userModel.Id, currency);
                if (wallet == null)
                {
                    return(CreateDataError(MessageError.CREATE_ADDRESS_FAIL));
                }
                var result = await walletBusiness.CreateAddressAsync(wallet);

                if (result.Status != Status.STATUS_SUCCESS)
                {
                    return(CreateDataError(MessageError.CREATE_ADDRESS_FAIL));
                }
                BlockchainAddress blockChainAddress;
                switch (currency)
                {
                case CryptoCurrency.BTC:
                    var bitCoinAddressRepository =
                        new BitcoinAddressRepository(VakapayRepositoryFactory.GetOldConnection());
                    blockChainAddress = bitCoinAddressRepository.FindByAddress(result.Data);
                    break;

                case CryptoCurrency.ETH:
                    var ethereumAddressRepository =
                        new EthereumAddressRepository(VakapayRepositoryFactory.GetOldConnection());
                    blockChainAddress = ethereumAddressRepository.FindById(result.Data);
                    break;

                case CryptoCurrency.VAKA:
                    var vaKaCoinAccountRepository =
                        new VakacoinAccountRepository(VakapayRepositoryFactory.GetOldConnection());
                    blockChainAddress = vaKaCoinAccountRepository.FindById(result.Data);
                    break;

                default:
                    return(CreateDataError(MessageError.CREATE_ADDRESS_FAIL));
                }

                return(blockChainAddress != null
                    ? CreateDataSuccess(JsonConvert.SerializeObject(blockChainAddress))
                    : CreateDataError(MessageError.CREATE_ADDRESS_FAIL));
            }
            catch (Exception)
            {
                return(CreateDataError(MessageError.CREATE_ADDRESS_FAIL));
            }
        }
Exemplo n.º 2
0
        public string GetAddresses()
        {
            try
            {
                var queryStringValue = Request.Query;


                if (!queryStringValue.ContainsKey("offset") || !queryStringValue.ContainsKey("networkName") ||
                    !queryStringValue.ContainsKey("limit"))
                {
                    return(HelpersApi.CreateDataError(MessageApiError.PARAM_INVALID));
                }

                StringValues sort;
                StringValues filter;
                StringValues networkName;
                queryStringValue.TryGetValue(ParseDataKeyApi.KEY_PASS_DATA_GET_OFFSET, out var offset);
                queryStringValue.TryGetValue(ParseDataKeyApi.KEY_PASS_DATA_GET_LIMIT, out var limit);
                if (queryStringValue.ContainsKey(ParseDataKeyApi.KEY_PASS_DATA_GET_FILTER))
                {
                    queryStringValue.TryGetValue(ParseDataKeyApi.KEY_PASS_DATA_GET_FILTER, out filter);
                }
                if (queryStringValue.ContainsKey(ParseDataKeyApi.KEY_PASS_DATA_GET_SORT))
                {
                    queryStringValue.TryGetValue(ParseDataKeyApi.KEY_PASS_DATA_GET_SORT, out sort);
                }

                queryStringValue.TryGetValue(ParseDataKeyApi.KEY_PASS_DATA_GET_NETWORK, out networkName);
                //sort = ConvertSortLog(sort);

                if (!HelpersApi.ValidateCurrency(networkName))
                {
                    return(HelpersApi.CreateDataError(MessageApiError.PARAM_INVALID));
                }

                var userModel = (User)RouteData.Values["UserModel"];

                var wallet = _walletBusiness.FindByUserAndNetwork(userModel.Id, networkName);
                int numberData;
                var listAddresses = _walletBusiness.GetAddressesFull(out numberData, wallet.Id, networkName,
                                                                     Convert.ToInt32(offset),
                                                                     Convert.ToInt32(limit), filter.ToString(), sort);

                return(new ReturnObject()
                {
                    Status = Status.STATUS_COMPLETED,
                    Data = new ResultList <BlockchainAddress>
                    {
                        List = listAddresses,
                        Total = numberData
                    }.ToJson()
                }.ToJson());
            }
            catch (Exception e)
            {
                return(new ReturnObject()
                {
                    Status = Status.STATUS_ERROR,
                    Message = e.Message
                }.ToJson());
            }
        }