public AdvisorResponse GetAdvisorData(int advisorId) { AdvisorRanking advisor = null; List <DomainObjects.Asset.Asset> assets = null; List <FollowAdvisor> advisorsFollowers = null; AdvisorRankingHistory advisorHistory = null; Parallel.Invoke(() => advisor = AdvisorRankingBusiness.GetAdvisorFullData(advisorId), () => assets = AssetBusiness.ListAssets(false), () => advisorsFollowers = FollowAdvisorBusiness.ListFollowers(new int[] { advisorId }, false), () => advisorHistory = AdvisorRankingHistoryBusiness.GetLastAdvisorRankingAndProfit(advisorId)); return(AdvisorRankingBusiness.GetAdvisorResponse(advisor, advisor.TotalAdvisors, advisorsFollowers, GetLoggedUser(), assets, advisorHistory, null, null)); }
public AdvisorPerformanceResponse GetAdvisorPeformance(int advisorId) { AdvisorRanking advisor = AdvisorRankingBusiness.GetAdvisorFullData(advisorId); if (advisor == null) { throw new NotFoundException("Advisor not found."); } List <DailyPerformanceResponse> dailyPerformance = null; List <Order> closedOrders = null; Parallel.Invoke(() => dailyPerformance = AdvisorRankingHistoryBusiness.ListDailyPerformance(advisorId), () => closedOrders = OrderBusiness.ListOrders(new int[] { advisorId }, null, new OrderStatusType[] { OrderStatusType.Close })); return(new AdvisorPerformanceResponse() { DailyPerformance = dailyPerformance, BestTrade = closedOrders.Any() ? closedOrders.Max(c => c.Profit ?? double.MinValue) : 0, WorstTrade = closedOrders.Any() ? closedOrders.Min(c => c.Profit ?? double.MinValue) : 0, DailyDrawdown = dailyPerformance.Any() ? dailyPerformance.Min(c => c.Variation) : 0 }); }