Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="gameId"></param>
        /// <param name="nickname"></param>
        /// <returns></returns>
        public bool NeglectGame(int gameId, string nickname)
        {
            try
            {
                using (WegaEntities db = new WegaEntities())
                {
                    var currentGame   = GetGameById(gameId, db);
                    var currentPlayer = GetPlayerByNickname(nickname, db);

                    //update game for user
                    if (currentGame.player1_id == currentPlayer.id)
                    {
                        throw new Exception("You cannot neglect a game you initiated");
                    }

                    if (currentGame.player2_id == currentPlayer.id)
                    {
                        currentGame.game_neglected   = true;
                        currentGame.player2_end_time = DateTime.Now;
                    }
                    else
                    {
                        throw new Exception("This player is not playing this game");
                    }
                    currentGame.date_ended = DateTime.Now;
                    db.SaveChanges();
                    return(true);
                }
            }
            catch (Exception e)
            {
                setErrorMessage(e);
                return(false);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="gameId"></param>
        /// <param name="nickname"></param>
        /// <returns></returns>
        public bool EndGame(int gameId, string nickname)
        {
            try
            {
                using (WegaEntities db = new WegaEntities())
                {
                    var currentGame   = GetGameById(gameId, db);
                    var currentPlayer = GetPlayerByNickname(nickname, db);

                    //update game for user
                    if (currentGame.player1_id == currentPlayer.id)
                    {
                        currentGame.player1_ended    = true;
                        currentGame.player1_end_time = DateTime.Now;
                    }
                    else if (currentGame.player2_id == currentPlayer.id)
                    {
                        currentGame.player2_ended    = true;
                        currentGame.player2_end_time = DateTime.Now;
                    }
                    else
                    {
                        throw new Exception("This player is not playing this game");
                    }

                    bool player1Ended     = currentGame.player1_ended == null ? false : true;
                    bool player2Ended     = currentGame.player2_ended == null ? false : true;
                    bool gameNotNeglected = !currentGame.game_neglected;
                    int  player1Score     = currentGame.player1_score;
                    int  player2Score     = currentGame.player2_score == null ? 0 : (int)currentGame.player2_score;

                    if (player1Ended && player2Ended && gameNotNeglected)
                    {
                        //game has ended, set winner
                        if (player1Score > player2Score)
                        {
                            currentGame.winner = currentGame.player1_id;
                        }
                        else if (player2Score > player1Score)
                        {
                            currentGame.winner = currentGame.player2_id;
                        }
                        currentGame.date_ended = DateTime.Now;
                    }

                    db.SaveChanges();
                    return(true);
                }
            }
            catch (Exception e)
            {
                setErrorMessage(e);
                return(false);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="username"></param>
        /// <param name="nickname"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public bool Register(String username, String nickname, String password)
        {
            try
            {
                using (WegaEntities db = new WegaEntities())
                {
                    var guy = db.players.FirstOrDefault(pl => pl.nickname == nickname);
                    if (guy != null)
                    {
                        setErrorMessage("The nickname already exists");
                        return(false);
                    }

                    guy = db.players.FirstOrDefault(pl => pl.username == username);
                    if (guy != null)
                    {
                        setErrorMessage("The username already exists");
                        return(false);
                    }

                    player p = new player
                    {
                        nickname = nickname,
                        username = username,
                        password = Util.EncryptPassword(password)
                    };

                    // Add the new object to the players collection.
                    db.players.Add(p);
                    // Submit the change to the database.
                    db.SaveChanges();
                    return(true);
                }
            }
            catch (DbEntityValidationException dbEx)
            {
                setErrorMessage(dbEx);
                return(false);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="wordPlayed"></param>
        /// <param name="gameId"></param>
        /// <param name="nickname"></param>
        /// <returns></returns>
        public int SendWord(String wordPlayed, int gameId, string nickname)
        {
            try
            {
                if (wordPlayed.Distinct().Count() != wordPlayed.Length)
                {
                    throw new Exception("The word played has some repetive letters and repeated letters are not allowed");
                }
                using (WegaEntities db = new WegaEntities())
                {
                    var currentGame   = GetGameById(gameId, db);
                    var currentPlayer = GetPlayerByNickname(nickname, db);

                    //check id word is valid
                    if (!IsValidWord(wordPlayed))
                    {
                        throw new Exception("Invalid word played");
                    }

                    //check if word was played before
                    word w             = GetWord(wordPlayed);
                    var  alreadyPlayed = db.game_words_history.FirstOrDefault(gwh => gwh.gwh_game_id == gameId && gwh.gwh_player_id == currentPlayer.id && gwh.gwh_word_id == w.id);
                    if (alreadyPlayed != null)
                    {
                        throw new Exception("Word previously played");
                    }

                    //otherwise update user score and insert word and
                    int  score        = Util.ComputeScore(wordPlayed);
                    bool player1Ended = currentGame.player1_ended == null ? false : true;
                    bool player2Ended = currentGame.player2_ended == null ? false : true;
                    int  player1Score = currentGame.player1_score;
                    int  player2Score = currentGame.player2_score == null ? 0 : (int)currentGame.player2_score;

                    if (currentGame.player1_id == currentPlayer.id)
                    {
                        if (player1Ended)
                        {
                            throw new Exception("You have already ended this game");
                        }
                        currentGame.player1_score = player1Score + score;
                    }
                    else if (currentGame.player2_id == currentPlayer.id)
                    {
                        if (player2Ended)
                        {
                            throw new Exception("You have already ended this game");
                        }
                        currentGame.player2_score = player2Score + score;
                    }
                    else
                    {
                        throw new Exception("This player is not playing this game");
                    }

                    game_words_history gameWordHistory = new game_words_history
                    {
                        gwh_datetime  = DateTime.Now,
                        gwh_game_id   = gameId,
                        gwh_player_id = currentPlayer.id,
                        gwh_word_id   = w.id
                    };
                    db.game_words_history.Add(gameWordHistory);
                    db.SaveChanges();
                    return(score);
                }
            }
            catch (Exception e)
            {
                setErrorMessage(e);
                return(0);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="username"></param>
        /// <param name="nickname"></param>
        /// <param name="password"></param>
        /// <returns>the game id</returns>
        public int CreateGame(String SenderNickName, String ReceiverNickName, String Letters)
        {
            if (Letters == null || SenderNickName == null || ReceiverNickName == null)
            {
                setErrorMessage("Some of the parameters are invalid");
                return(0);
            }

            if (Letters.Distinct().Count() != 7)
            {
                setErrorMessage("The letters must be 7 unique distinct characters");
                return(0);
            }

            if (SenderNickName.Trim() == ReceiverNickName.Trim())
            {
                setErrorMessage("You cannot play against yourself");
                return(0);
            }

            //todo use a transaction
            try
            {
                using (WegaEntities db = new WegaEntities())
                {
                    var player1 = db.players.FirstOrDefault(p => p.nickname == SenderNickName);
                    var player2 = db.players.FirstOrDefault(p => p.nickname == ReceiverNickName);

                    if (player1 == null || player2 == null)
                    {
                        setErrorMessage("Could not retreve players");
                        return(0);
                    }

                    if (HasUnfinishedGame(player1.id, player2.id, db))
                    {
                        setErrorMessage("You have an existing game with this user");
                        return(0);
                    }

                    game g = new game
                    {
                        player1_id   = player1.id,
                        player2_id   = player2.id,
                        date_started = DateTime.Now,
                        game_time    = GAME_TIME
                    };

                    db.games.Add(g);
                    db.SaveChanges();

                    game_letters_history glh = new game_letters_history
                    {
                        letters = Letters,
                        game_id = g.id
                    };
                    // Add the new object to the players collection.
                    db.game_letters_history.Add(glh);
                    // Submit the change to the database.
                    db.SaveChanges();
                    return(g.id);
                }
            }
            catch (DbEntityValidationException dbEx)
            {
                setErrorMessage(dbEx);
                return(0);
            }
        }