|
|
|
@@ -58,10 +58,9 @@ export class GameService {
|
|
|
|
|
|
|
|
|
|
|
|
async generateToken(user : User, grantTicketDto : GrantTicketDto)
|
|
|
|
async generateToken(user : User, grantTicketDto : GrantTicketDto)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// if (user.status === "In Game")
|
|
|
|
if (user.status === "In Game" || user.status === "In Pool")
|
|
|
|
// return new HttpException("You can't play two games", HttpStatus.FORBIDDEN);
|
|
|
|
return new HttpException("You can't play two games", HttpStatus.FORBIDDEN);
|
|
|
|
// else
|
|
|
|
else if (grantTicketDto.isGameIsWithInvitation === true)
|
|
|
|
if (grantTicketDto.isGameIsWithInvitation === true)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const secondUser : Partial<User> = await this.userService.findOneByUsername(user.id.toString(), grantTicketDto.playerTwoUsername)
|
|
|
|
const secondUser : Partial<User> = await this.userService.findOneByUsername(user.id.toString(), grantTicketDto.playerTwoUsername)
|
|
|
|
if (!secondUser || secondUser.username === user.username)
|
|
|
|
if (!secondUser || secondUser.username === user.username)
|
|
|
|
@@ -73,6 +72,7 @@ export class GameService {
|
|
|
|
tok.numberOfRegisteredUser = 0;
|
|
|
|
tok.numberOfRegisteredUser = 0;
|
|
|
|
tok.token = encryptedTextToReturn;
|
|
|
|
tok.token = encryptedTextToReturn;
|
|
|
|
this.tokenGameRepository.save(tok);
|
|
|
|
this.tokenGameRepository.save(tok);
|
|
|
|
|
|
|
|
this.userService.updateStatus(user.id, "In Pool")
|
|
|
|
return { token : encryptedTextToReturn };
|
|
|
|
return { token : encryptedTextToReturn };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (grantTicketDto.isGameIsWithInvitation === false) {
|
|
|
|
else if (grantTicketDto.isGameIsWithInvitation === false) {
|
|
|
|
@@ -82,14 +82,13 @@ export class GameService {
|
|
|
|
tok.numberOfRegisteredUser = 0;
|
|
|
|
tok.numberOfRegisteredUser = 0;
|
|
|
|
tok.token = encryptedTextToReturn;
|
|
|
|
tok.token = encryptedTextToReturn;
|
|
|
|
this.tokenGameRepository.save(tok);
|
|
|
|
this.tokenGameRepository.save(tok);
|
|
|
|
|
|
|
|
this.userService.updateStatus(user.id, "In Pool")
|
|
|
|
return { token : encryptedTextToReturn };
|
|
|
|
return { token : encryptedTextToReturn };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return new HttpException("Something went wrong !", HttpStatus.INTERNAL_SERVER_ERROR)
|
|
|
|
return new HttpException("Something went wrong !", HttpStatus.INTERNAL_SERVER_ERROR)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async validateToken(validateTicketDto : ValidateTicketDto) {
|
|
|
|
async validateToken(validateTicketDto : ValidateTicketDto) {
|
|
|
|
console.log("On valide le token pour : ")
|
|
|
|
|
|
|
|
console.log(validateTicketDto)
|
|
|
|
|
|
|
|
if (validateTicketDto.isGameIsWithInvitation === true)
|
|
|
|
if (validateTicketDto.isGameIsWithInvitation === true)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const tokenGame : TokenGame = await this.tokenGameRepository.createQueryBuilder('tokengame')
|
|
|
|
const tokenGame : TokenGame = await this.tokenGameRepository.createQueryBuilder('tokengame')
|
|
|
|
@@ -109,13 +108,11 @@ export class GameService {
|
|
|
|
const userOne : User = await this.userRepository.createQueryBuilder('user')
|
|
|
|
const userOne : User = await this.userRepository.createQueryBuilder('user')
|
|
|
|
.where("user.username = :username", {username : tokenGame.playerOneUsername})
|
|
|
|
.where("user.username = :username", {username : tokenGame.playerOneUsername})
|
|
|
|
.getOne();
|
|
|
|
.getOne();
|
|
|
|
userOne.status = "In Game";
|
|
|
|
this.userService.updateStatus(userOne.id, "In Game")
|
|
|
|
this.userRepository.save(userOne);
|
|
|
|
|
|
|
|
const userTwo : User = await this.userRepository.createQueryBuilder('user')
|
|
|
|
const userTwo : User = await this.userRepository.createQueryBuilder('user')
|
|
|
|
.where("user.username = :username", {username : tokenGame.playerTwoUsername})
|
|
|
|
.where("user.username = :username", {username : tokenGame.playerTwoUsername})
|
|
|
|
.getOne();
|
|
|
|
.getOne();
|
|
|
|
userTwo.status = "In Game";
|
|
|
|
this.userService.updateStatus(userTwo.id, "In Game")
|
|
|
|
this.userRepository.save(userTwo);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -135,8 +132,7 @@ export class GameService {
|
|
|
|
const user : User = await this.userRepository.createQueryBuilder('user')
|
|
|
|
const user : User = await this.userRepository.createQueryBuilder('user')
|
|
|
|
.where("user.username = :username", {username : tokenGame.playerOneUsername})
|
|
|
|
.where("user.username = :username", {username : tokenGame.playerOneUsername})
|
|
|
|
.getOne();
|
|
|
|
.getOne();
|
|
|
|
user.status = "In Game";
|
|
|
|
this.userService.updateStatus(user.id, "In Game")
|
|
|
|
this.userRepository.save(user);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@@ -160,13 +156,12 @@ export class GameService {
|
|
|
|
token : gameToken.token,
|
|
|
|
token : gameToken.token,
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log("Il y a des invitations !")
|
|
|
|
|
|
|
|
return partialGame;
|
|
|
|
return partialGame;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async declineInvitation(user : User, token : string)
|
|
|
|
async declineInvitation(user : User, token : string)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (user.status === "In Game")
|
|
|
|
if (user.status !== "Connected")
|
|
|
|
return new HttpException("You must finish your game before decline.", HttpStatus.FORBIDDEN)
|
|
|
|
return new HttpException("You must finish your game before decline.", HttpStatus.FORBIDDEN)
|
|
|
|
console.log("On décline l'invitation")
|
|
|
|
console.log("On décline l'invitation")
|
|
|
|
const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokengame')
|
|
|
|
const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokengame')
|
|
|
|
@@ -188,10 +183,10 @@ export class GameService {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const playerOne = await this.userRepository.findOneBy({username : tokenGame.playerOneUsername})
|
|
|
|
const playerOne = await this.userRepository.findOneBy({username : tokenGame.playerOneUsername})
|
|
|
|
const playerTwo = await this.userRepository.findOneBy({username : tokenGame.playerTwoUsername})
|
|
|
|
const playerTwo = await this.userRepository.findOneBy({username : tokenGame.playerTwoUsername})
|
|
|
|
playerOne.status = "Connected"
|
|
|
|
if (playerOne.status !== "Disconnected")
|
|
|
|
playerTwo.status = "Connected"
|
|
|
|
this.userService.updateStatus(playerOne.id, "Connected")
|
|
|
|
this.userRepository.save(playerOne)
|
|
|
|
if (playerTwo.status !== "Disconnected")
|
|
|
|
this.userRepository.save(playerTwo)
|
|
|
|
this.userService.updateStatus(playerTwo.id, "Connected")
|
|
|
|
return this.tokenGameRepository.remove(tokenGame);
|
|
|
|
return this.tokenGameRepository.remove(tokenGame);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return new HttpException("Token not found !", HttpStatus.NOT_FOUND)
|
|
|
|
return new HttpException("Token not found !", HttpStatus.NOT_FOUND)
|
|
|
|
@@ -199,6 +194,8 @@ export class GameService {
|
|
|
|
|
|
|
|
|
|
|
|
async acceptInvitation(user : User, token : string)
|
|
|
|
async acceptInvitation(user : User, token : string)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if (user.status !== "Connected")
|
|
|
|
|
|
|
|
return new HttpException("You must finish your game before accept.", HttpStatus.FORBIDDEN)
|
|
|
|
const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokenGame')
|
|
|
|
const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokenGame')
|
|
|
|
.andWhere('tokenGame.playerTwoUsername = :playerTwoUsername', {playerTwoUsername : user.username})
|
|
|
|
.andWhere('tokenGame.playerTwoUsername = :playerTwoUsername', {playerTwoUsername : user.username})
|
|
|
|
.andWhere('tokenGame.token = :token', {token : token})
|
|
|
|
.andWhere('tokenGame.token = :token', {token : token})
|
|
|
|
@@ -213,7 +210,7 @@ export class GameService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async requestIfAnotherUserHasRespondToquestForGame(user : User, token : string) {
|
|
|
|
async requestIfAnotherUserHasRespondToquestForGame(user : User, token : string) {
|
|
|
|
if (user.status === "In Game")
|
|
|
|
if (user.status !== "Connected")
|
|
|
|
return new HttpException("You can't do that.", HttpStatus.BAD_REQUEST)
|
|
|
|
return new HttpException("You can't do that.", HttpStatus.BAD_REQUEST)
|
|
|
|
const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokenGame')
|
|
|
|
const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokenGame')
|
|
|
|
.where('tokenGame.token = :token', {token : token})
|
|
|
|
.where('tokenGame.token = :token', {token : token})
|
|
|
|
@@ -241,10 +238,6 @@ export class GameService {
|
|
|
|
console.log("200 retourné pour la création de partie")
|
|
|
|
console.log("200 retourné pour la création de partie")
|
|
|
|
const playerOne = await this.userRepository.findOneBy({username : game.playerOneUsername})
|
|
|
|
const playerOne = await this.userRepository.findOneBy({username : game.playerOneUsername})
|
|
|
|
const playerTwo = await this.userRepository.findOneBy({username : game.playerTwoUsername})
|
|
|
|
const playerTwo = await this.userRepository.findOneBy({username : game.playerTwoUsername})
|
|
|
|
playerOne.status = "In Game"
|
|
|
|
|
|
|
|
playerTwo.status = "In Game"
|
|
|
|
|
|
|
|
this.userRepository.save(playerOne)
|
|
|
|
|
|
|
|
this.userRepository.save(playerTwo)
|
|
|
|
|
|
|
|
return HttpStatus.OK
|
|
|
|
return HttpStatus.OK
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -276,10 +269,8 @@ export class GameService {
|
|
|
|
this.userService.incrementVictories(playerOne.id)
|
|
|
|
this.userService.incrementVictories(playerOne.id)
|
|
|
|
this.userService.incrementDefeats(playerTwo.id)
|
|
|
|
this.userService.incrementDefeats(playerTwo.id)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
playerOne.status = "Connected"
|
|
|
|
this.userService.updateStatus(playerOne.id, "Connected")
|
|
|
|
playerTwo.status = "Connected"
|
|
|
|
this.userService.updateStatus(playerTwo.id, "Connected")
|
|
|
|
this.userRepository.save(playerOne)
|
|
|
|
|
|
|
|
this.userRepository.save(playerTwo)
|
|
|
|
|
|
|
|
return HttpStatus.OK
|
|
|
|
return HttpStatus.OK
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|