示例#1
0
        public async Task <BrokerExchangeResult> Exchange(BrokerExchangeToStableParams model)
        {
            _logger.LogInformation("Exchange: {@params}", model);

            //ValidateExchangeParams(model);

            // calculate exchange
            Exchange exchange = await ExchangeToStableCalculator.Create(model, _rateCache, _settings);

            exchange.InTxId        = Guid.NewGuid().ToString();
            exchange.InBlockNumber = await _graft.Sale(exchange.InTxId, exchange.SellAmount);

            exchange.PayWalletAddress = _settings.GraftWalletAddress;
            exchange.Log($"{model.SellCurrency} address: {exchange.PayWalletAddress}");

            _cache.Set(exchange.ExchangeId, exchange, DateTimeOffset.Now.AddMinutes(_settings.PaymentTimeoutMinutes));

            _db.Exchange.Add(exchange);
            await _db.SaveChangesAsync();

            var res = GetExchangeResult(exchange);

            _logger.LogInformation("Exchange Result: {@params}", res);
            return(res);
        }
        // convert cryptocurrency payment to GRFT
        public async Task <BrokerExchangeResult> Exchange(BrokerExchangeParams model)
        {
            _logger.LogInformation("Exchange: {@params}", model);

            ValidateExchangeParams(model);

            if (model.PaymentId == null)
            {
                // for Demo payments
                var calcRes = await CalcExchange(model);

                model.PaymentId = calcRes.ExchangeId;

                model.BlockNumber = await _graft.Sale(calcRes.ExchangeId, calcRes.BuyAmount);
            }

            Exchange exchange = await GetExchange(model.PaymentId);

            exchange.OutTxId        = model.PaymentId;
            exchange.OutBlockNumber = model.BlockNumber;

            var res = await ExchangeStatus(exchange.ExchangeId);

            _logger.LogInformation("Exchange Result: {@params}", res);
            return(res);
        }