protected virtual IActionResult UpdateAssetsValues(string api) { RunAsync(() => { Dictionary <int, Dictionary <OrderActionType, List <OrderResponse> > > result = AssetValueBusiness.UpdateBinanceAssetsValues(); if (result != null && result.Any()) { foreach (var ordersType in result) { var advisor = AdvisorRankingBusiness.GetAdvisorFullData(ordersType.Key); if (advisor != null) { foreach (var orders in ordersType.Value) { var methodName = orders.Key == OrderActionType.StopLoss ? "onReachStopLoss" : orders.Key == OrderActionType.TakeProfit ? "onReachTakeProfit" : "onReachOrderLimit"; HubContext.Clients.User(advisor.Email).SendAsync(methodName, orders.Value); } var followers = UserBusiness.GetUserFromCache(advisor.Email)?.FollowingUsers; if (followers?.Any() == true) { var respectiveOrders = ordersType.Value.Values.SelectMany(c => c).ToList(); foreach (var user in followers) { HubContext.Clients.User(user).SendAsync("onNewTradeSignal", respectiveOrders); } } } } } }); return(Ok()); }
public IEnumerable <AssetResponse> ListAssetsFollowedByUser(int userId) { var assetValues = AssetCurrentValueBusiness.ListAssetsFollowedByUser(userId); var advisors = AdvisorRankingBusiness.ListAdvisorsFullData(); var loggedUser = GetValidUser(); var assetResponse = assetValues.Select(asset => GetAssetResponse(loggedUser, asset, null, advisors)); return(assetResponse.OrderByDescending(asset => asset.MarketCap)); }
private IEnumerable <AssetResponse> ListAssetResult(int?forcedAssetId = null) { var selectAssets = forcedAssetId.HasValue ? new int[] { forcedAssetId.Value } : null; List <AssetCurrentValue> assets = null; List <AdvisorRanking> advisors = null; Parallel.Invoke(() => assets = AssetCurrentValueBusiness.ListAllAssets(true, selectAssets), () => advisors = AdvisorRankingBusiness.ListAdvisorsFullData()); var user = GetLoggedUser(); return(assets.Select(c => GetAssetResponse(user, c, null, advisors))); }
protected virtual IActionResult UpdateAdvisorsRankingAndProfit() { RunAsync(() => AdvisorRankingBusiness.SetAdvisorRankingAndProfit()); return(Ok()); }