public async System.Threading.Tasks.Task <List <WalletDTO> > GetBitmexTransactions(int userId) { var keyList = await _keyRepo.GetKeysFromNameAsync("BitMEX", userId); var walletHistory = new List <Wallet>(); foreach (ExchangeKey key in keyList) { BitMEXApi bitMEXApi = new BitMEXApi(key.Key, key.Secret); string temp = bitMEXApi.GetWalletHistory(); var walletHistoryTemp = JsonConvert.DeserializeObject <List <BitMEXWalletHistory> >(temp); foreach (BitMEXWalletHistory transaction in walletHistoryTemp) { Wallet tempTransaction = ConvertBitmexTransaction(transaction, key.ExchangeKeyId); if (!await WalletHistoryExists(tempTransaction.ExchangeTransactionId)) { await _genericRepo.AddAsync(tempTransaction); walletHistory.Add(tempTransaction); } } } var walletHistoryDTO = new List <WalletDTO>(); foreach (Wallet transaction in walletHistory) { walletHistoryDTO.Add(ConvertTransaction(transaction)); } return(walletHistoryDTO); }
public async Task <List <ExchangeKeyDTO> > GetExchangeKeys(string name, int userId) { var keyList = new List <ExchangeKey>(); if (name == null) { keyList = await _keyRepo.GetKeysFromUserIdAsync(userId); } else { keyList = await _keyRepo.GetKeysFromNameAsync(name, userId); } var keyDTOList = new List <ExchangeKeyDTO>(); foreach (ExchangeKey key in keyList) { keyDTOList.Add(ConvertExchangeKey(key)); } return(keyDTOList); }
//Get all orders from all exchanges from a given user public async Task <List <Order> > GetAllOrders(int userId) { DateTime time = DateTime.Now; time = time.AddDays(-1); var portfolio = await _portfolioRepo.GetDefaultPortfolioAsync(userId); int portfolioId = portfolio.PortfolioId; var BitMEXKey = await _keyRepo.GetKeysFromNameAsync("BitMEX", userId); var BinanceKey = await _keyRepo.GetKeysFromNameAsync("Binance", userId); var orderList = new List <Order>(); foreach (ExchangeKey key in BitMEXKey) { orderList.AddRange(await GetBitMEXOrdersFromUserId(userId, portfolioId)); key.LastRefresh = time; foreach (Order order in orderList) { order.ExchangeKeyId = key.ExchangeKeyId; } await _genericRepo.UpdateAsync(key); } foreach (ExchangeKey key in BinanceKey) { orderList.AddRange(await GetBinanceOrdersFromUserId(userId)); } var savedOrders = await _orderRepo.SaveOrdersAsync(orderList); return(savedOrders); }