public async Task <IActionResult> User(string steamId) { var servers = (await _pavlovServerService.FindAll()).Where(x => x.ServerType == ServerType.Community); var steamIdentityStats = (await _steamIdentityStatsServerService.FindAll()).Where(x => x.SteamId == steamId); var tmp = new LeaderBoardViewModel() { server = 0, AllServers = servers.Prepend(new PavlovServer() { Id = 0, Name = "--Please select--" }).ToList(), list = steamIdentityStats.Select(x => new SteamIdentityStatsServerViewModel { SteamId = x.SteamId, SteamName = x.SteamName, SteamPicture = x.SteamPicture, serverName = servers.First(y => y.Id == x.ServerId).Name, Kills = x.Kills, Deaths = x.Deaths, Assists = x.Assists, Exp = x.Exp, UpTime = x.UpTime, }) }; return(View("Index", tmp)); }
public async Task Should_HandleEmptyData() { var leaderBoardResponse = await _client.GetAsync(ApiPath.LeaderBoard(100)); LeaderBoardViewModel leaderBoardViewModel = await leaderBoardResponse.Content.ReadAsAsync <LeaderBoardViewModel>(); Assert.Empty(leaderBoardViewModel.WorstPerformers.Values); Assert.Empty(leaderBoardViewModel.BestPerformers.Values); Assert.Empty(leaderBoardViewModel.MostBearish.Values); Assert.Empty(leaderBoardViewModel.MostBullish.Values); }
public async Task <IActionResult> Index() { var servers = (await _pavlovServerService.FindAll()).Where(x => x.ServerType == ServerType.Community); var tmp = new LeaderBoardViewModel() { server = 0, AllServers = servers.Prepend(new PavlovServer() { Id = 0, Name = "--Please select--" }).ToList(), list = Array.Empty <SteamIdentityStatsServerViewModel>() }; return(View("Index", tmp)); }
public async Task Should_OnlyShowedTheTopMembers() { TestUser testUser1 = await CreateTestUserWithPortfolio(); TestUser testUser2 = await CreateTestUserWithPortfolio(); TestUser testUser3 = await CreateTestUserWithPortfolio(); SymbolSearchResultDTO jpmStock = await FetchSymbol("JPM", ExchangeType.NYSE); // Add singlequote stocks var jpmData = new SingleQuoteData(jpmStock.SymbolId, jpmStock.Ticker, 200, 200, 200, 200, 200, 200, 0, 0, DateTime.UtcNow, DateTime.UtcNow); await SetSingleQuoteData(new UpsertSingleQuoteData(jpmStock.SymbolId, jpmData)); // Add symbols User 1 await AddSymbolToPortfolioWithAvgPrice(testUser1, jpmStock.SymbolId, 100); // Add symbols User 2 await AddSymbolToPortfolioWithAvgPrice(testUser2, jpmStock.SymbolId, 200); // Add symbols User 3 await AddSymbolToPortfolioWithAvgPrice(testUser3, jpmStock.SymbolId, 300); var leaderBoardResponse = await _client.GetAsync(ApiPath.LeaderBoard(2)); LeaderBoardViewModel leaderBoardViewModel = await leaderBoardResponse.Content.ReadAsAsync <LeaderBoardViewModel>(); // Verify calculations BoardValue bestPerformerRank1 = leaderBoardViewModel.BestPerformers.Values.ElementAt(0); BoardValue bestPerformerRank2 = leaderBoardViewModel.BestPerformers.Values.ElementAt(1); BoardValue worstPerformerRank1 = leaderBoardViewModel.WorstPerformers.Values.ElementAt(0); BoardValue worstPerformerRank2 = leaderBoardViewModel.WorstPerformers.Values.ElementAt(1); Assert.Equal(2, leaderBoardViewModel.BestPerformers.Values.Count()); Assert.Equal(2, leaderBoardViewModel.WorstPerformers.Values.Count()); Assert.Equal(testUser1.UserId, Guid.Parse(bestPerformerRank1.Id)); Assert.Equal(testUser2.UserId, Guid.Parse(bestPerformerRank2.Id)); Assert.Equal(testUser3.UserId, Guid.Parse(worstPerformerRank1.Id)); Assert.Equal(testUser2.UserId, Guid.Parse(worstPerformerRank2.Id)); }
public async Task <LeaderBoardViewModel> GetLeaderBoard(LeaderBoardRequest request) { var users = userRepository.GetAll(); var currentUser = Feature.CurrentUser(httpContextAccessor, userRepository); var result = new LeaderBoardViewModel(); foreach (var user in users) { var userViewModel = new UserLeaderBoardViewModel() { TotalPoint = await GetUserPoint(user.OId, request.FieldId), UserAvatar = user.AvatarHash, UserName = $"{user.FirstName} {user.LastName}", UserId = user.OId }; result.LeaderBoards.Add(userViewModel); if (userViewModel.UserId != currentUser.OId) { continue; } var currentUserLeaderBoard = new CurrentUserLeaderBoardViewModel() { TotalPoint = await GetUserPoint(user.OId, request.FieldId), UserAvatar = user.AvatarHash, UserName = $"{user.FirstName} {user.LastName}", UserId = user.OId }; result.CurrentUser = currentUserLeaderBoard; } result.LeaderBoards = result.LeaderBoards.OrderByDescending(x => x.TotalPoint).ToList(); var iter = 1; foreach (var item in result.LeaderBoards) { item.Index = iter++; if (result.CurrentUser.UserId == item.UserId) { result.CurrentUser.Index = item.Index; } } return(result); }
public async Task Should_IgnorePortfolioSymbolsWithNoAveragePrice() { TestUser testUser1 = await CreateTestUserWithPortfolio(); TestUser testUser2 = await CreateTestUserWithPortfolio(); SymbolSearchResultDTO jpmStock = await FetchSymbol("JPM", ExchangeType.NYSE); SymbolSearchResultDTO fbStock = await FetchSymbol("FB", ExchangeType.NASDAQ); // Add singlequote stocks var jpmData = new SingleQuoteData(jpmStock.SymbolId, jpmStock.Ticker, 200, 200, 200, 200, 200, 200, 0, 0, DateTime.UtcNow, DateTime.UtcNow); var fbData = new SingleQuoteData(fbStock.SymbolId, fbStock.Ticker, 333.33m, 333.33m, 333.33m, 333.33m, 333.33m, 300, 0, 0, DateTime.UtcNow, DateTime.UtcNow); await SetSingleQuoteData(new UpsertSingleQuoteData(jpmStock.SymbolId, jpmData)); await SetSingleQuoteData(new UpsertSingleQuoteData(fbData.SymbolId, fbData)); // Add symbols User 1 await AddSymbolToPortfolioWithAvgPrice(testUser1, jpmStock.SymbolId, 100); await AddSymbolToPortfolio(testUser1, fbStock.SymbolId); // Add symbols User 2 await AddSymbolToPortfolio(testUser2, jpmStock.SymbolId); await AddSymbolToPortfolio(testUser2, fbStock.SymbolId); var leaderBoardResponse = await _client.GetAsync(ApiPath.LeaderBoard(2)); LeaderBoardViewModel leaderBoardViewModel = await leaderBoardResponse.Content.ReadAsAsync <LeaderBoardViewModel>(); // Verify calculations BoardValue bestPerformerRank1 = leaderBoardViewModel.BestPerformers.Values.ElementAt(0); BoardValue worstPerformerRank1 = leaderBoardViewModel.WorstPerformers.Values.ElementAt(0); Assert.Single(leaderBoardViewModel.BestPerformers.Values); Assert.Single(leaderBoardViewModel.WorstPerformers.Values); Assert.Equal(testUser1.UserId, Guid.Parse(bestPerformerRank1.Id)); Assert.Equal("100.00", bestPerformerRank1.Value); Assert.Equal(testUser1.UserId, Guid.Parse(worstPerformerRank1.Id)); Assert.Equal("100.00", worstPerformerRank1.Value); }
public IActionResult Leaderboard() { var leaderBoardViewModel = new LeaderBoardViewModel(); //List<int?> profiles = _prestigeScoreRepository.FindAll().Select(p => p.ProfileId).Distinct().ToList(); var innerJoin = _prestigeScoreRepository.FindAll() .Join(_profileRepository.FindAll(), playerScore => playerScore.ProfileId, playerProfile => playerProfile.Id, (playerScore, playerProfile) => new { profileName = playerProfile.ProfileName, pointsEarned = playerScore.PointsEarned, totalScore = playerScore.Score, source = playerScore.Source, createDate = playerScore.CreatedDate }).GroupBy(p => new { p.profileName, p.source }).Select(group => new { group.Key.profileName, score = group.Max(d => d.totalScore) }).OrderByDescending(s => s.score).Select(s => new { s.profileName, s.score }).GroupBy(p => p.profileName).Select(s => new { profileName = s.Key, score = s.Max(m => m.score) }).OrderByDescending(o => o.score).ToList(); List <PlayerRanking> playerRankings = new List <PlayerRanking>(); foreach (var item in innerJoin) { PlayerRanking ranking = new PlayerRanking(); ranking.ProfileName = item.profileName; ranking.Score = item.score; playerRankings.Add(ranking); } return(View(playerRankings)); }
public async Task <IActionResult> Server(int server) { if (server == 0) { return(RedirectToAction("Index")); } var servers = (await _pavlovServerService.FindAll()).Where(x => x.ServerType == ServerType.Community).ToList(); if (!servers.Select(x => x.Id).Contains(server)) { return(RedirectToAction("Index")); } var tmp = new LeaderBoardViewModel() { server = servers.First(x => x.Id == server).Id, AllServers = servers.Prepend(new PavlovServer() { Id = 0, Name = "--Please select--" }).ToList() }; return(View("Index", tmp)); }
public async Task Should_ReturnMostBearishAndMostBullishStocksByVotes() { TestUser testUser1 = await CreateTestUserWithPortfolio(); TestUser testUser2 = await CreateTestUserWithPortfolio(); TestUser testUser3 = await CreateTestUserWithPortfolio(); SymbolSearchResultDTO jpmStock = await FetchSymbol("JPM", ExchangeType.NYSE); SymbolSearchResultDTO fbStock = await FetchSymbol("FB", ExchangeType.NASDAQ); SymbolSearchResultDTO tslaStock = await FetchSymbol("TSLA", ExchangeType.NASDAQ); SymbolSearchResultDTO msftStock = await FetchSymbol("MSFT", ExchangeType.NASDAQ); // User 1 votes await SubmitVoteForUser(new VoteCommand { SymbolId = jpmStock.SymbolId, Direction = VoteDirection.UpVote }, testUser1.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = fbStock.SymbolId, Direction = VoteDirection.UpVote }, testUser1.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = tslaStock.SymbolId, Direction = VoteDirection.DownVote }, testUser1.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = msftStock.SymbolId, Direction = VoteDirection.DownVote }, testUser1.UserId); // User 2 votes await SubmitVoteForUser(new VoteCommand { SymbolId = jpmStock.SymbolId, Direction = VoteDirection.UpVote }, testUser2.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = fbStock.SymbolId, Direction = VoteDirection.DownVote }, testUser2.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = tslaStock.SymbolId, Direction = VoteDirection.DownVote }, testUser2.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = msftStock.SymbolId, Direction = VoteDirection.DownVote }, testUser2.UserId); // User 2 votes await SubmitVoteForUser(new VoteCommand { SymbolId = jpmStock.SymbolId, Direction = VoteDirection.UpVote }, testUser3.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = fbStock.SymbolId, Direction = VoteDirection.None }, testUser3.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = tslaStock.SymbolId, Direction = VoteDirection.DownVote }, testUser3.UserId); await SubmitVoteForUser(new VoteCommand { SymbolId = msftStock.SymbolId, Direction = VoteDirection.UpVote }, testUser3.UserId); var leaderBoardResponse = await _client.GetAsync(ApiPath.LeaderBoard(4)); LeaderBoardViewModel leaderBoardViewModel = await leaderBoardResponse.Content.ReadAsAsync <LeaderBoardViewModel>(); // Verify most bullish order BoardValue mostBullishRank1 = leaderBoardViewModel.MostBullish.Values.ElementAt(0); BoardValue mostBullishRank2 = leaderBoardViewModel.MostBullish.Values.ElementAt(1); BoardValue mostBullishRank3 = leaderBoardViewModel.MostBullish.Values.ElementAt(2); BoardValue mostBullishRank4 = leaderBoardViewModel.MostBullish.Values.ElementAt(3); Assert.Equal(jpmStock.SymbolId.ToString(), mostBullishRank1.Id); Assert.Equal("JPM", mostBullishRank1.Name); Assert.Equal("3", mostBullishRank1.Value); Assert.Equal(fbStock.SymbolId.ToString(), mostBullishRank2.Id); Assert.Equal("FB", mostBullishRank2.Name); Assert.Equal("0", mostBullishRank2.Value); Assert.Equal(msftStock.SymbolId.ToString(), mostBullishRank3.Id); Assert.Equal("MSFT", mostBullishRank3.Name); Assert.Equal("-1", mostBullishRank3.Value); Assert.Equal(tslaStock.SymbolId.ToString(), mostBullishRank4.Id); Assert.Equal("TSLA", mostBullishRank4.Name); Assert.Equal("-3", mostBullishRank4.Value); // Verify most bearish order BoardValue mostBearishRank1 = leaderBoardViewModel.MostBearish.Values.ElementAt(0); BoardValue mostBearishRank2 = leaderBoardViewModel.MostBearish.Values.ElementAt(1); BoardValue mostBearishRank3 = leaderBoardViewModel.MostBearish.Values.ElementAt(2); BoardValue mostBearishRank4 = leaderBoardViewModel.MostBearish.Values.ElementAt(3); Assert.Equal(tslaStock.SymbolId.ToString(), mostBearishRank1.Id); Assert.Equal("TSLA", mostBearishRank1.Name); Assert.Equal("-3", mostBearishRank1.Value); Assert.Equal(msftStock.SymbolId.ToString(), mostBearishRank2.Id); Assert.Equal("MSFT", mostBearishRank2.Name); Assert.Equal("-1", mostBearishRank2.Value); Assert.Equal(fbStock.SymbolId.ToString(), mostBearishRank3.Id); Assert.Equal("FB", mostBearishRank3.Name); Assert.Equal("0", mostBearishRank3.Value); Assert.Equal(jpmStock.SymbolId.ToString(), mostBearishRank4.Id); Assert.Equal("JPM", mostBearishRank4.Name); Assert.Equal("3", mostBearishRank4.Value); }
public async Task Should_ReturnBestAndWorstPerformers() { TestUser testUser1 = await CreateTestUserWithPortfolio(); TestUser testUser2 = await CreateTestUserWithPortfolio(); TestUser testUser3 = await CreateTestUserWithPortfolio(); SymbolSearchResultDTO jpmStock = await FetchSymbol("JPM", ExchangeType.NYSE); SymbolSearchResultDTO fbStock = await FetchSymbol("FB", ExchangeType.NASDAQ); SymbolSearchResultDTO tslaStock = await FetchSymbol("TSLA", ExchangeType.NASDAQ); SymbolSearchResultDTO msftStock = await FetchSymbol("MSFT", ExchangeType.NASDAQ); // Add singlequote stocks var jpmData = new SingleQuoteData(jpmStock.SymbolId, jpmStock.Ticker, 200, 200, 200, 200, 200, 200, 0, 0, DateTime.UtcNow, DateTime.UtcNow); var fbData = new SingleQuoteData(fbStock.SymbolId, fbStock.Ticker, 333.33m, 333.33m, 333.33m, 333.33m, 333.33m, 300, 0, 0, DateTime.UtcNow, DateTime.UtcNow); var tslaData = new SingleQuoteData(tslaStock.SymbolId, tslaStock.Ticker, 888.88m, 888.88m, 888.88m, 888.88m, 888.88m, 800, 0, 0, DateTime.UtcNow, DateTime.UtcNow); var msftData = new SingleQuoteData(msftStock.SymbolId, msftStock.Ticker, 225, 225, 225, 225, 225, 200, 0, 0, DateTime.UtcNow, DateTime.UtcNow); await SetSingleQuoteData(new UpsertSingleQuoteData(jpmStock.SymbolId, jpmData)); await SetSingleQuoteData(new UpsertSingleQuoteData(fbData.SymbolId, fbData)); await SetSingleQuoteData(new UpsertSingleQuoteData(tslaData.SymbolId, tslaData)); await SetSingleQuoteData(new UpsertSingleQuoteData(msftData.SymbolId, msftData)); // Add symbols User 1 await AddSymbolToPortfolioWithAvgPrice(testUser1, jpmStock.SymbolId, 100.25m); await AddSymbolToPortfolioWithAvgPrice(testUser1, fbStock.SymbolId, 260.35m); await AddSymbolToPortfolioWithAvgPrice(testUser1, msftStock.SymbolId, 175.50m); // Add symbols User 2 await AddSymbolToPortfolioWithAvgPrice(testUser2, jpmStock.SymbolId, 5.00m); await AddSymbolToPortfolioWithAvgPrice(testUser2, fbStock.SymbolId, 10.00m); // Add Symbols Users 3 await AddSymbolToPortfolioWithAvgPrice(testUser3, jpmStock.SymbolId, 180.88m); await AddSymbolToPortfolioWithAvgPrice(testUser3, fbStock.SymbolId, 400.00m); await AddSymbolToPortfolioWithAvgPrice(testUser3, tslaStock.SymbolId, 1000m); await AddSymbolToPortfolioWithAvgPrice(testUser3, msftStock.SymbolId, 300.90m); var leaderBoardResponse = await _client.GetAsync(ApiPath.LeaderBoard(3)); LeaderBoardViewModel leaderBoardViewModel = await leaderBoardResponse.Content.ReadAsAsync <LeaderBoardViewModel>(); // Verify calculations BoardValue bestPerformerRank1 = leaderBoardViewModel.BestPerformers.Values.ElementAt(0); BoardValue bestPerformerRank2 = leaderBoardViewModel.BestPerformers.Values.ElementAt(1); BoardValue bestPerformerRank3 = leaderBoardViewModel.BestPerformers.Values.ElementAt(2); Assert.Equal(3, leaderBoardViewModel.BestPerformers.Values.Count()); Assert.Equal(testUser2.UserId, Guid.Parse(bestPerformerRank1.Id)); Assert.Equal(testUser1.UserId, Guid.Parse(bestPerformerRank2.Id)); Assert.Equal(testUser3.UserId, Guid.Parse(bestPerformerRank3.Id)); Assert.Equal(testUser2.UserId, Guid.Parse(bestPerformerRank1.Name)); Assert.Equal(testUser1.UserId, Guid.Parse(bestPerformerRank2.Name)); Assert.Equal(testUser3.UserId, Guid.Parse(bestPerformerRank3.Name)); Assert.Equal("3,566.65", bestPerformerRank1.Value); Assert.Equal("51.91", bestPerformerRank2.Value); Assert.Equal("-10.61", bestPerformerRank3.Value); BoardValue worstPerformerRank1 = leaderBoardViewModel.WorstPerformers.Values.ElementAt(0); BoardValue worstPerformerRank2 = leaderBoardViewModel.WorstPerformers.Values.ElementAt(1); BoardValue worstPerformerRank3 = leaderBoardViewModel.WorstPerformers.Values.ElementAt(2); Assert.Equal(3, leaderBoardViewModel.WorstPerformers.Values.Count()); Assert.Equal(testUser3.UserId, Guid.Parse(worstPerformerRank1.Id)); Assert.Equal(testUser1.UserId, Guid.Parse(worstPerformerRank2.Id)); Assert.Equal(testUser2.UserId, Guid.Parse(worstPerformerRank3.Id)); Assert.Equal("-10.61", worstPerformerRank1.Value); Assert.Equal("51.91", worstPerformerRank2.Value); Assert.Equal("3,566.65", worstPerformerRank3.Value); }
public LeaderBoard(LeaderBoardViewModel viewModel) { InitializeComponent(); viewModel.Navigation = Navigation; BindingContext = viewModel; }
public LeaderBoardPage() { InitializeComponent(); BindingContext = new LeaderBoardViewModel(); }