protected static void SendMessage(string text, User toUser, Game game, UserMessagesType msgType, BattleGameEntities context) { toUser.UserMessages.Add(new UserMessage() { Game = game, MessageState = context.MessageStates.First(ms => ms.State == MessageStateUnread), UserMessagesType = msgType, Text = text }); }
public static void JoinGame(int userId, int gameId, string password) { if (password != null) { ValidateGamePassword(password); } var context = new BattleGameEntities(); using (context) { var user = GetUser(userId, context); var game = context.Games.FirstOrDefault(g => g.Id == gameId); if (game == null) { throw new ServerErrorException("No such game", "ERR_INV_GAME"); } ValidateOpenGameStatus(game, context); if (game.Password != null && game.Password != password) { throw new ServerErrorException("Invalid game password", "INV_GAME_PASS"); } game.BlueUser = user; string messageText = string.Format("{0} just joined your game {1}", game.BlueUser.Nickname, game.Title); UserMessagesType gameJoinedUserMessageType = context.UserMessagesTypes.First(mt => mt.Type == UserMessageTypeGameJoined); SendMessage(messageText, game.RedUser, game, gameJoinedUserMessageType, context); var fullGameStatus = context.Statuses.First(st => st.Value == GameStatusFull); game.Status = fullGameStatus; context.SaveChanges(); } }