public IActionResult Get(int id) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var trade = Repo.GetById(id); if (trade == null) { return(NotFound()); } return(Ok(Repo.GetById(id))); }
public async Task <Result> Cancel(string tradeId) { var trade = _tradeRepository.GetById(tradeId); if (trade == null) { return(new Result(false, "Trade not found")); } var strategy = _strategyRepository.GetById(trade.StrategyId); if (strategy.TradingMode == TradingMode.Real) { var exchange = _exchangeFactory.GetExchange(trade.Exchange); if (exchange == null) { return(new Result(false, "Exchange not found")); } var cancelResult = await exchange.CancelOrder(trade.ExchangeUuid, strategy.UserId); if (!cancelResult) { return(new Result(false, "Exchange refused to cancel")); } } return(_tradeFinalizationService.CancelTrade(trade)); }
public async Task <bool> CancelOrder(string tradeId, string userId) { var userSecret = _exchangeSecretRepository.GetByUserAndExchange(userId, _exchangeName); var translations = await _marketDataService.GetMarketTranslationsAsync(_exchangeName); var trade = _tradeRepository.GetById(tradeId); try { await _binanceWrapper.CancelOrder(userSecret.ApiKey, userSecret.ApiSecret, tradeId, translations[trade.MarketId]); return(true); } catch { return(false); } }
public void SaveTradeReadModel_IfSaveOrUpdateMethodIsCalled_ItShouldGetSavedInTheDatabase() { Order buyOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "market", "buy", 5, 0, new StubbedOrderIdGenerator()); Order sellOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "market", "sell", 5, 0, new StubbedOrderIdGenerator()); //Trade trade=new Trade("XBTUSD",new Price(100),new Volume(10),DateTime.Now,buyOrder,sellOrder); Trade trade = TradeFactory.GenerateTrade("XBTUSD", new Price(100), new Volume(10), buyOrder, sellOrder); TradeReadModel model = ReadModelAdapter.GetTradeReadModel(trade); _persistanceRepository.SaveOrUpdate(model); TradeReadModel getSavedModel = _tradeRepository.GetById(trade.TradeId.Id.ToString()); Assert.NotNull(getSavedModel); AssertAreEqual(getSavedModel, model); }
public void PublishTradeToOutputDisruptor_IfTradeListenerIsInitiated_ItShouldSaveInDatabase() { Order buyOrder = OrderFactory.CreateOrder("123", "XBTUSD", "limit", "buy", 10, 100, new StubbedOrderIdGenerator()); Order sellOrder = OrderFactory.CreateOrder("1234", "XBTUSD", "limit", "sell", 10, 100, new StubbedOrderIdGenerator()); //Trade trade=new Trade("XBTUSD",new Price(100),new Volume(10),DateTime.Now,buyOrder,sellOrder); Trade trade = TradeFactory.GenerateTrade("XBTUSD", new Price(1000), new Volume(10), buyOrder, sellOrder); OutputDisruptor.Publish(trade); _manualResetEvent.WaitOne(5000); TradeReadModel model = _tradeRepository.GetById(trade.TradeId.Id.ToString()); Assert.NotNull(model); Assert.AreEqual(model.BuyOrderId, buyOrder.OrderId.Id.ToString()); Assert.AreEqual(model.SellOrderId, sellOrder.OrderId.Id.ToString()); Assert.AreEqual(model.Price, 1000); Assert.AreEqual(model.CurrencyPair, "XBTUSD"); Assert.AreEqual(model.BuyTraderId, "123"); Assert.AreEqual(model.SellTraderId, "1234"); Assert.AreEqual(model.Volume, 10); }
public ActionResult View(long tradeID) { var trade = tradeRepository.GetById(tradeID); var entity = SessionHelper.CurrentEntity; MethodResult result = tradeService.CanHaveAccess(entity, trade); if (result.IsError) { return(RedirectToHomeWithError(result)); } var possibleItems = tradeService.GetItemsForTrade(entity, trade) .OrderBy(i => ((ProductTypeEnum)i.ProductID).ToHumanReadable()) .ThenBy(i => i.Quality); var possibleMoney = tradeService.GetMoneyForTrade(entity, trade) .OrderBy(i => i.CurrencyID); var vm = new TradeViewModel(trade, possibleItems, possibleMoney, tradeService); return(View(vm)); }
public IActionResult GetTrade(string id) { return(Ok(_tradeRepository.GetById(id))); }