private MatchHistoryLobbySlot GetPlayer(LobbySlot lobbySlot) { var player = new MatchHistoryLobbySlot { Name = lobbySlot.Name, SSteamId = lobbySlot.User?.SteamId.ToString(), Position = lobbySlot.Position, ProfilePrivate = lobbySlot.User != null ? lobbySlot.User.ProfilePrivate: false }; if (lobbySlot.User != null) { if (lobbySlot.Lobby.Ranked == 2) { player.Rank = lobbySlot.RankDM; player.TotalGames = lobbySlot.GamesStartedDM; player.WinRatio = lobbySlot.GamesStartedDM > 0 ? lobbySlot.GamesWonDM * 100 / lobbySlot.GamesStartedDM : 0; player.DropRatio = lobbySlot.GamesStartedDM > 0 ? (lobbySlot.GamesStartedDM - lobbySlot.GamesEndedDM) * 100 / lobbySlot.GamesStartedDM : 0; } else { player.Rank = lobbySlot.RankRM; player.TotalGames = lobbySlot.GamesStartedRM; player.WinRatio = lobbySlot.GamesStartedRM > 0 ? lobbySlot.GamesWonRM * 100 / lobbySlot.GamesStartedRM : 0; player.DropRatio = lobbySlot.GamesStartedRM > 0 ? (lobbySlot.GamesStartedRM - lobbySlot.GamesEndedRM) * 100 / lobbySlot.GamesStartedRM : 0; } player.GameStats = UserUtils.GetGameStats(lobbySlot.GamesStartedRM, lobbySlot.GamesStartedDM, lobbySlot.GamesWonRM, lobbySlot.GamesWonDM, lobbySlot.GamesEndedRM, lobbySlot.GamesEndedDM); LobbyUtils.CalculateUserFieldColors(player, 0); } return(player); }
public IEnumerable <Player> Get() { //Secondary where clause is done in memory because there seems to be an EF bug var users = _repository.Users.Where(u => u.Games > 0).ToList().Where(u => u.SteamId > 0).Select(u => new Player { Name = u.Name, RankRM = u.RankRM, RankDM = u.RankDM, SSteamId = u.SteamId.ToString(), GameStats = UserUtils.GetGameStats(u.GamesStartedRM, u.GamesStartedDM, u.GamesWonRM, u.GamesWonDM, u.GamesEndedRM, u.GamesEndedDM), Profile = new PlayerProfile { Location = u.Location, ProfilePrivate = u.ProfilePrivate, ProfileDataFetched = u.ProfileDataFetched }, ReputationStats = new PlayerReputationStats { Games = u.Games, NegativeReputation = u.NegativeReputation, PositiveReputation = u.PositiveReputation } }).ToList(); foreach (var user in users) { LobbyUtils.CalculateUserFieldColors(user, 0); } return(users); }
public User Get(string id) { var user = _repository.Users.Include(u => u.LobbySlots).ThenInclude(ls => ls.Lobby).Include(u => u.Reputations).ThenInclude(ur => ur.Reputation).Include(u => u.Reputations).ThenInclude(u => u.Lobby).Select(u => new User { Id = u.Id, SSteamId = u.SteamId.ToString(), Name = u.Name, Location = u.Location, Games = u.Games, PositiveReputation = u.PositiveReputation, NegativeReputation = u.NegativeReputation, RankRM = u.RankRM, RankDM = u.RankDM, GamesStartedRM = u.GamesStartedRM, GamesEndedRM = u.GamesEndedRM, GamesWonRM = u.GamesWonRM, GamesStartedDM = u.GamesStartedDM, GamesEndedDM = u.GamesEndedDM, GamesWonDM = u.GamesWonDM, ProfilePrivate = u.ProfilePrivate, ProfileDataFetched = u.ProfileDataFetched.HasValue ? u.ProfileDataFetched.Value.ToString("d") : null, KnownNames = u.LobbySlots.Select(ls => ls.Name).Distinct().OrderBy(ls => ls).ToList(), ReputationStats = new PlayerReputationStats() { Games = u.Games, PositiveReputation = u.PositiveReputation, NegativeReputation = u.NegativeReputation }, Reputations = u.Reputations.OrderByDescending(r => r.Added).Select(ur => new UserReputation { Id = ur.Id, Comment = ur.Comment, Added = ur.Added.ToString("d"), Reputation = new Reputation { Id = ur.Reputation.Id, Name = ur.Reputation.Name, Type = ur.Reputation.Type, }, Lobby = ur.Lobby != null ? new Models.Lobby { Id = ur.Lobby.Id, Name = ur.Lobby.Name } : null }).ToList(), Matches = u.LobbySlots.Where(ls => ls.Lobby.Started.HasValue && ls.Position > 0).OrderByDescending(ls => ls.Lobby.Joined).Select(ls => new MatchHistory { Id = ls.Lobby.Id, Name = ls.Lobby.Name, Joined = ls.Lobby.Joined.ToString("d") }).ToList() }).FirstOrDefault(u => u.SSteamId == id); user.GameStats = UserUtils.GetGameStats(user.GamesStartedRM, user.GamesStartedDM, user.GamesWonRM, user.GamesWonDM, user.GamesEndedRM, user.GamesEndedDM); LobbyUtils.CalculateUserFieldColors(user, 0); return(user); }
public Lobby Get(string id) { if (id == "0") { if (Variables.Lobby != null) { lock (Variables.LobbyPlayers) { LobbyUtils.CalculateLobbyPlayerFieldColors(); Variables.Lobby.Players = Variables.LobbyPlayers.OrderBy(lp => lp.Position); Variables.Lobby.SLobbyId = Variables.Lobby.LobbyId.ToString(); foreach (var player in Variables.Lobby.Players) { player.SSteamId = player.SteamId.ToString(); } return(Variables.Lobby); } } else { return(null); } } else { var longLobbyId = ulong.Parse(id); var runningLobby = _repository.Lobbies.Include(l => l.Players).ThenInclude(ls => ls.User).FirstOrDefault(l => l.LobbyId == longLobbyId); var lobby = new Commons.Models.Lobby { LobbyId = runningLobby.LobbyId, SLobbyId = runningLobby.LobbyId.ToString(), GameType = runningLobby.GameType, Name = runningLobby.Name, Ranked = runningLobby.Ranked, Players = runningLobby.Players.Where(p => p.Position > 0).OrderBy(p => p.Position).Select(p => new Player { Name = p.Name, SteamId = p.User != null ? p.User.SteamId : 0, SSteamId = p.User?.SteamId.ToString(), LobbySlotId = p.Id, Position = p.Position, Rank = runningLobby.Ranked == 2 ? p.RankDM : p.RankRM, RankRM = p.RankRM, RankDM = p.RankDM, Profile = p.User != null ? new PlayerProfile { Location = p.User.Location, ProfileDataFetched = p.User.ProfileDataFetched, ProfilePrivate = p.User.ProfilePrivate } : null, ReputationStats = p.User != null ? new PlayerReputationStats { Games = p.User.Games, PositiveReputation = p.User.PositiveReputation, NegativeReputation = p.User.NegativeReputation } : null, GameStats = p.User != null ? UserUtils.GetGameStats(p.GamesStartedRM, p.GamesStartedDM, p.GamesWonRM, p.GamesWonDM, p.GamesEndedRM, p.GamesEndedDM) : null, }).ToList() }; foreach (var player in lobby.Players) { LobbyUtils.CalculateUserFieldColors(player, lobby.Ranked); } return(lobby); } }