Пример #1
0
        public IEnumerable <Game> Get()
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <Game>()
            {
                SqlCommand = "SELECT id_game, player1, player2, (SELECT count(*) FROM turns_in_history t WHERE t.id_game = g.id_game) + 1, CONCAT(CONVERT(varchar(10), (SELECT nickname from players p join credentials c on (c.id_cred = p.id_cred) WHERE id_player = player1)),' vs ',CONVERT(varchar(10), (SELECT nickname from players p join credentials c on (c.id_cred = p.id_cred) WHERE id_player = player2))), CASE WHEN id_turncur IS NULL THEN 0 WHEN id_turncur IS NOT NULL THEN CASE WHEN (SELECT id_player FROM moves m JOIN current_turns c on (m.id_move = c.id_move) WHERE c.id_turncur = g.id_turncur) = g.player1 THEN 2 WHEN (SELECT id_player FROM moves m JOIN current_turns c on (m.id_move = c.id_move) WHERE c.id_turncur = g.id_turncur) = g.player2 THEN 1 END END from games g WHERE player1 = (SELECT p.id_player FROM credentials c join players p on (c.id_cred = p.id_cred) WHERE c.nickname = @nick) or player2 = (SELECT p.id_player FROM credentials c join players p on (c.id_cred = p.id_cred) WHERE c.nickname = @nick)",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    }
                },
                ModelExtractor = reader => new Game
                {
                    id_game     = (int)reader[0],
                    id_player1  = (int)reader[1],
                    id_player2  = (int)reader[2],
                    count_turns = (int)reader[3], //zamiast tego ktora tura z kolei
                    name        = (string)reader[4],
                    who_move    = (int)reader[5]
                }
            };

            return(sqlCommand.Execute());
        }
Пример #2
0
        public IEnumerable <GameInHistory> GetHistory()
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <GameInHistory>()
            {
                SqlCommand = "SELECT id_ghis, player1, player2, score, CONCAT(CONVERT(varchar(10), (SELECT nickname from players p join credentials c on (c.id_cred = p.id_cred) WHERE id_player = player1)),' vs ',CONVERT(varchar(10), (SELECT nickname from players p join credentials c on (c.id_cred = p.id_cred) WHERE id_player = player2))) FROM games_in_history WHERE player1 = (SELECT p.id_player FROM credentials c join players p on (c.id_cred = p.id_cred) WHERE c.nickname = @nick)  or player2 = (SELECT p.id_player FROM credentials c join players p on (c.id_cred = p.id_cred) WHERE c.nickname = @nick)",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    }
                },
                ModelExtractor = reader => new GameInHistory
                {
                    id_game    = (int)reader[0],
                    id_player1 = (int)reader[1],
                    id_player2 = (int)reader[2],
                    score      = (int)reader[3],
                    name       = (string)reader[4]
                }
            };

            return(sqlCommand.Execute());
        }
Пример #3
0
        public IEnumerable <User> GetFriends()
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <User>()
            {
                SqlCommand = "SELECT c.id_cred, id_player, nickname FROM friendships JOIN players p on(player2 = id_player) join credentials c on (c.id_cred = p.id_cred) WHERE player1 = (SELECT id_player FROM credentials c join players p on(c.id_cred =  p.id_cred) WHERE nickname = @nick)",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    }
                },
                ModelExtractor = reader => new User
                {
                    //user jest na odwrót w bazie i nie mogę tego zmienić bez rozwalania bazy dlatego tu jest 1 i 0, a nie 0 i 1
                    Id       = (int)reader[1],
                    Id_cred  = (int)reader[0],
                    nickname = (string)reader[2]
                }
            };

            return(sqlCommand.Execute());
        }
Пример #4
0
        public void Post()
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <Credentials>()
            {
                SqlCommand = "EXECUTE addPlayer @vNickname = @nick, @vPass = @pass",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    },
                    new SqlParameter("@pass", SqlDbType.VarChar)
                    {
                        Value = credentials.password
                    }
                }
            };

            sqlCommand.Execute();
        }
Пример #5
0
        public IEnumerable <User> GetNick(int id)
        {
            var sqlCommand = new SimpleSqlCommand <User>()
            {
                SqlCommand = "SELECT id_player, c.id_cred, nickname FROM players p join credentials c on(c.id_cred = p.id_cred) WHERE id_player = @id",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@id", SqlDbType.Int)
                    {
                        Value = id
                    }
                },
                ModelExtractor = reader => new User
                {
                    Id       = (int)reader[0],
                    Id_cred  = (int)reader[1],
                    nickname = (string)reader[2]
                }
            };

            return(sqlCommand.Execute());
        }
Пример #6
0
        public void Post([FromBody] Invitation value)
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <Credentials>()
            {
                SqlCommand = "INSERT INTO games_invitations(sender, reciever) values((SELECT id_player FROM credentials c join players p on(c.id_cred =  p.id_cred) WHERE nickname = @nick),@rec)",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    },
                    new SqlParameter("@rec", SqlDbType.Int)
                    {
                        Value = value.Reciever
                    }
                }
            };

            sqlCommand.Execute();
        }
Пример #7
0
        public void Put([FromBody] Invitation value)
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <Credentials>()
            {
                SqlCommand = "EXECUTE addFriendship @vPlayer1 = @nick, @vPlayer2 = @rec",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    },
                    new SqlParameter("@rec", SqlDbType.Int)
                    {
                        Value = value.Reciever
                    }
                }
            };

            sqlCommand.Execute();
        }
Пример #8
0
        public void Put([FromBody] GameAccept value)
        {
            var sqlCommand = new SimpleSqlCommand <Credentials>()
            {
                SqlCommand = "EXECUTE addGame @vPlayer1 = @id1, @vPlayer2 = @id2, @vId_version = 1",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@id1", SqlDbType.Int)
                    {
                        Value = value.IdPlayer1
                    },
                    new SqlParameter("@id2", SqlDbType.Int)
                    {
                        Value = value.IdPlayer2
                    }
                }
            };

            sqlCommand.Execute();

            var sqlCommand2 = new SimpleSqlCommand <Credentials>()
            {
                SqlCommand = "DELETE FROM games_invitations WHERE sender = @id1 AND reciever = @id2",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@id1", SqlDbType.Int)
                    {
                        Value = value.IdPlayer1
                    },
                    new SqlParameter("@id2", SqlDbType.Int)
                    {
                        Value = value.IdPlayer2
                    }
                }
            };

            sqlCommand2.Execute();
        }
Пример #9
0
        public IEnumerable <Move> GetMoes(int id)
        {
            var sqlCommand = new SimpleSqlCommand <Move>()
            {
                SqlCommand = "EXECUTE returnMoves @vIdGame = @id",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@id", SqlDbType.Int)
                    {
                        Value = id
                    }
                },
                ModelExtractor = reader => new Move
                {
                    XCoord    = (int)reader[0],
                    YCoord    = (int)reader[1],
                    id_player = (int)reader[2],
                    IdGame    = id
                }
            };

            return(sqlCommand.Execute());
        }
Пример #10
0
        public bool GetCred()
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <DefaultResponse>()
            {
                SqlCommand = "SELECT COUNT(*) FROM players p JOIN credentials c ON (p.id_cred = c.id_cred) WHERE nickname = @nick AND pass = @pass",
                //SqlCommand = "SELECT COUNT(*) FROM credentials",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    },
                    new SqlParameter("@pass", SqlDbType.VarChar)
                    {
                        Value = credentials.password
                    }
                },
                ModelExtractor = reader => new DefaultResponse
                {
                    Success = false,
                    Message = reader[0].ToString()
                }
            };
            //List<int> result = sqlCommand.Execute();

            List <DefaultResponse> response_list = sqlCommand.Execute();

            //return result[0];
            if (int.Parse(response_list[0].Message) > 0)
            {
                return(true);
            }

            return(false);
        }
Пример #11
0
        public IEnumerable <User> GetGameInvit()
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <User>()
            {
                SqlCommand = "SELECT sender, c.id_cred, nickname from games_invitations join players p on (sender =  id_player) join credentials c on (c.id_cred = p.id_cred) WHERE reciever = (SELECT id_player FROM credentials c join players p on(c.id_cred =  p.id_cred) WHERE nickname = @nick)",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    }
                },
                ModelExtractor = reader => new User
                {
                    Id       = (int)reader[0],
                    Id_cred  = (int)reader[1],
                    nickname = (string)reader[2]
                }
            };

            return(sqlCommand.Execute());
        }
Пример #12
0
        public void Post([FromBody] Move value)
        {
            var credentials = ControllerUtility.GetCredentials(Request.Headers);

            var sqlCommand = new SimpleSqlCommand <User>()
            {
                SqlCommand = "EXECUTE addMove @mNick = @nick, @mX_coord = @xcoord, @mY_coord = @ycoord, @mId_game = @idgame",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@idgame", SqlDbType.Int)
                    {
                        Value = value.IdGame
                    },
                    new SqlParameter("@xcoord", SqlDbType.Int)
                    {
                        Value = value.XCoord
                    },
                    new SqlParameter("@ycoord", SqlDbType.Int)
                    {
                        Value = value.YCoord
                    },
                    new SqlParameter("@nick", SqlDbType.VarChar)
                    {
                        Value = credentials.login
                    }
                }
            };

            sqlCommand.Execute();

            var sqlCommand1 = new SimpleSqlCommand <Move>()
            {
                SqlCommand = "EXECUTE returnMoves @vIdGame = @id",
                Parameters = new SqlParameter[]
                {
                    new SqlParameter("@id", SqlDbType.Int)
                    {
                        Value = value.IdGame
                    }
                },
                ModelExtractor = reader => new Move
                {
                    XCoord    = (int)reader[0],
                    YCoord    = (int)reader[1],
                    id_player = (int)reader[2],
                    IdGame    = value.IdGame
                }
            };

            var movesList = sqlCommand1.Execute();

            if (movesList.Count == 400)
            {
                var sqlCommandR = new SimpleSqlCommand <User>()
                {
                    SqlCommand = "EXECUTE addResult @vId_game = @idgame, @vId_Score = 0",
                    Parameters = new SqlParameter[]
                    {
                        new SqlParameter("@idgame", SqlDbType.Int)
                        {
                            Value = value.IdGame
                        }
                    }
                };

                sqlCommandR.Execute();
                return;
            }

            int[,] board = new int[20, 20];
            for (int y = 0; y < 20; y++)
            {
                for (int x = 0; x < 20; x++)
                {
                    board[x, y] = -1;
                }
            }
            foreach (var move in movesList)
            {
                board[move.XCoord, move.YCoord] = move.id_player;
            }

            int winner = 0;

            for (int y = 2; y < 18 && winner == 0; y++)
            {
                for (int x = 2; x < 18 && winner == 0; x++)
                {
                    if (board[x, y] == -1)
                    {
                        continue;
                    }
                    if (CheckVictory(board, x, y, 1, 0) ||
                        CheckVictory(board, x, y, 1, 1) ||
                        CheckVictory(board, x, y, 0, 1) ||
                        CheckVictory(board, x, y, -1, 1))
                    {
                        winner = board[x, y];
                    }
                }
            }

            if (winner != 0)
            {
                var sqlCommandW = new SimpleSqlCommand <User>()
                {
                    SqlCommand = "EXECUTE addResult @vId_game = @idgame, @vId_Score = @idwinner",
                    Parameters = new SqlParameter[]
                    {
                        new SqlParameter("@idgame", SqlDbType.Int)
                        {
                            Value = value.IdGame
                        },
                        new SqlParameter("@idwinner", SqlDbType.Int)
                        {
                            Value = winner
                        }
                    }
                };
                sqlCommandW.Execute();
            }
        }