public static void AssignLobbySlotId(Database.Domain.LobbySlot lobbySlot, Player player = null) { if (player == null) { player = Variables.Lobby.Players.FirstOrDefault(p => p.SteamId == lobbySlot.User.SteamId); } if (player == null) { LogUtils.Warn(string.Format("Could not assign lobby slot id for player: {0}({1})", lobbySlot.User.Name, lobbySlot.User.SteamId)); } else { player.LobbySlotId = lobbySlot.Id; } }
private static void PersistLobbyStart(Lobby lobby) { try { using (IRepository repository = new Repository()) { var persistedLobby = repository.Lobbies.Include(l => l.Players).ThenInclude(p => p.User).FirstOrDefault(l => l.LobbyId == lobby.LobbyId); if (persistedLobby != null) { foreach (var player in persistedLobby.Players) { if (player.User != null) { player.Position = 0; repository.SetModified(player); } else { repository.Delete(player); } } foreach (var player in lobby.Players) { try { if (player.SteamId != 0) { var lobbyPlayer = UserUtils.GetUser(repository, player); var lobbySlot = persistedLobby.Players.FirstOrDefault(p => p.User != null && p.User.SteamId == player.SteamId); if (lobbySlot == null) { lobbySlot = new Database.Domain.LobbySlot() { Name = player.Name, RankDM = player.RankDM, RankRM = player.RankRM, User = lobbyPlayer, Lobby = persistedLobby }; repository.Add(lobbySlot); repository.SaveChanges(); AssignLobbySlotId(lobbySlot); } else { repository.SetModified(lobbySlot); } lobbySlot.Position = player.Position; lobbyPlayer.Games++; repository.SetModified(lobbyPlayer); } else { repository.Add(new Database.Domain.LobbySlot() { Lobby = persistedLobby, Name = player.Name, Position = player.Position, }); } } catch (Exception e) { LogUtils.Error(string.Format("Failed to finalize player - User {0}({1}) - Lobby: {2}", player.Name, player.SteamId, lobby.LobbyId), e); } } persistedLobby.Started = DateTime.UtcNow; persistedLobby.Sealed = false; repository.SetModified(persistedLobby); repository.SaveChanges(); } } } catch (Exception e) { LogUtils.Error("Failed to persist lobby start for lobby: " + lobby.LobbyId, e); } }