internal async Task <(List <PlayerVM>, bool)> CreatePlayersAsync(List <string> playerNames, string userId) { var playerNamesLower = playerNames.Select(x => x.ToLower()).ToList(); var allPlayerNames = await context.Players .Where(p => p.CompanyId == userId) .Select(p => p.Name.ToLower()) .ToListAsync(); var badPlayerNames = allPlayerNames.Intersect(playerNamesLower).ToArray(); var badPlayers = new List <PlayerVM>(); if (badPlayerNames.Length > 0) { foreach (var name in badPlayerNames) { badPlayers.Add( new PlayerVM { PlayerName = name }); } return(badPlayers, false); } var newPlayers = new List <EntityEntry <Players> >(); foreach (var playerName in playerNames) { if (playerName != "") { var newPlayer = await context.Players.AddAsync(new Players { Name = playerName, CompanyId = userId, Score = 0 }); newPlayers.Add(newPlayer); } } await context.SaveChangesAsync(); var newToLeaderboard = newPlayers.Select(p => new PlayerVM { PlayerName = p.Entity.Name, PlayerId = p.Entity.Id, Score = p.Entity.Score }).ToList(); return(newToLeaderboard, true); }
internal async Task FinalizeTournamentAsync(FinalizeTournamentVM vm, string userId) { var tournament = await context.Tournaments.Where(t => t.CompanyId == userId).SingleOrDefaultAsync(t => t.Id == vm.TournamentId); tournament.IsCompleted = true; var winner = await context.Players.Where(p => p.CompanyId == userId).SingleOrDefaultAsync(p => p.Id == vm.WinnerPlayerId); if (winner != null) { winner.Score += vm.WinnerScore; } var second = await context.Players.Where(p => p.CompanyId == userId).SingleOrDefaultAsync(p => p.Id == vm.SecondPlayerId); if (second != null) { second.Score += vm.SecondScore; } await context.SaveChangesAsync(); }