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); }