Ejemplo n.º 1
0
        public static void JoinGame(int userId, JoinGameModel gameModel)
        {
            ValidateGamePassword(gameModel.Password);
            ValidateUserNumber(gameModel.Number);

            var context = new BullsAndCowsEntities();

            using (context)
            {
                var game = GetGame(gameModel.Id, context);

                if (game.GameStatus.Status != GameStatusOpen)
                {
                    throw new ServerErrorException("Game is unavailable", "ERR_INV_GAME");
                }

                if (game.Password != gameModel.Password)
                {
                    throw new ServerErrorException("Incorrect game password", "ERR_BAD_PASS");
                }

                var blueUser = GetUser(userId, context);
                game.BlueUser       = blueUser;
                game.BlueUserNumber = gameModel.Number;
                var fullGameStatus = context.GameStatuses.First(st => st.Status == GameStatusFull);
                game.GameStatus = fullGameStatus;

                MessageState unreadMessageState    = context.MessageStates.First(ms => ms.State == MessageStateUnread);
                MessageType  gameJoinedMessageType = context.MessageTypes.First(mt => mt.Type == MessageTypeGameJoined);
                var          message = new Message()
                {
                    Text         = string.Format(MessageTextJoinedGame, blueUser.Nickname, game.Title),
                    Game         = game,
                    User         = game.RedUser,
                    MessageState = unreadMessageState,
                    MessageType  = gameJoinedMessageType
                };
                context.Messages.Add(message);
                context.SaveChanges();
            }
        }
Ejemplo n.º 2
0
        public static void JoinGame(int userId, JoinGameModel gameModel)
        {
            ValidateGamePassword(gameModel.Password);
            ValidateUserNumber(gameModel.Number);

            var context = new BullsAndCowsEntities();
            using (context)
            {
                var game = GetGame(gameModel.Id, context);

                if (game.GameStatus.Status != GameStatusOpen)
                {
                    throw new ServerErrorException("Game is unavailable", "ERR_INV_GAME");
                }

                if (game.Password != gameModel.Password)
                {
                    throw new ServerErrorException("Incorrect game password", "ERR_BAD_PASS");
                }

                var blueUser = GetUser(userId, context);
                game.BlueUser = blueUser;
                game.BlueUserNumber = gameModel.Number;
                var fullGameStatus = context.GameStatuses.First(st => st.Status == GameStatusFull);
                game.GameStatus = fullGameStatus;

                MessageState unreadMessageState = context.MessageStates.First(ms => ms.State == MessageStateUnread);
                MessageType gameJoinedMessageType = context.MessageTypes.First(mt => mt.Type == MessageTypeGameJoined);
                var message = new Message()
                {
                    Text = string.Format(MessageTextJoinedGame, blueUser.Nickname, game.Title),
                    Game = game,
                    User = game.RedUser,
                    MessageState = unreadMessageState,
                    MessageType = gameJoinedMessageType
                };
                context.Messages.Add(message);
                context.SaveChanges();
            }
        }
        public static void JoinGame(int userId, JoinGameModel gameModel)
        {
            ValidateGamePassword(gameModel.Password);
            ValidateUserNumber(gameModel.Number);

            var context = new BullsAndCowsEntities();
            using (context)
            {
                var game = GetGame(gameModel.Id, context);

                ValidateOpenGameStatus(game.GameStatus);

                if (game.Password != gameModel.Password)
                {
                    throw new ServerErrorException("Incorrect game password", "INV_GAME_AUTH");
                }

                var blueUser = GetUser(userId, context);
                game.BlueUser = blueUser;
                game.BlueUserNumber = gameModel.Number;
                var fullGameStatus = context.GameStatuses.First(st => st.Status == GameStatusFull);
                game.GameStatus = fullGameStatus;

                MessageType gameJoinedMessageType = context.MessageTypes.First(mt => mt.Type == MessageTypeGameJoined);

                var msgText = string.Format(MessageTextJoinedGame, blueUser.Nickname, game.Title);

                SendMessage(msgText, game.RedUser, game, gameJoinedMessageType, context);

                context.SaveChanges();
            }
        }