diff --git a/src/game/game.service.ts b/src/game/game.service.ts index ea11a669de95f43f89f8b3a7f798358e63421bbe..83760b1f65ccc3a108a620a2539c0ccf137acde1 100644 --- a/src/game/game.service.ts +++ b/src/game/game.service.ts @@ -38,98 +38,88 @@ export class GameService { // create a new game async createNewGame(personId: PersonEntity, gameData: GameDTO) { - try { - // checks if a game with the same name exists already - const { name } = gameData; - if (await this.gameRepository.findOne({ where: { name } })) { - throw new HttpException('Game already exists', HttpStatus.BAD_REQUEST); - } - // else add the game to the database - const game = await this.gameRepository.create({ - ...gameData, - factions: gameData.factions, - }); - await this.gameRepository.insert(game); - const gamePerson = await this.game_PersonRepository.create({ - faction: null, - game: game, - person: personId, - }); - gamePerson['role'] = 'admin'; - await this.game_PersonRepository.insert(gamePerson); - return { - message: 'New game added', - }; - } catch (error) { - return error.message; + // checks if a game with the same name exists already + const { name } = gameData; + if (await this.gameRepository.findOne({ where: { name } })) { + throw new HttpException('Game already exists', HttpStatus.BAD_REQUEST); } + // else add the game to the database + const game = await this.gameRepository.create({ + ...gameData, + factions: gameData.factions, + }); + await this.gameRepository.insert(game); + const gamePerson = await this.game_PersonRepository.create({ + faction: null, + game: game, + person: personId, + }); + gamePerson['role'] = 'admin'; + await this.game_PersonRepository.insert(gamePerson); + return { + message: 'New game added', + }; } // edit already created game async editGame(id: string, gameData: GameDTO) { - try { - // checks if a game with the same name exists already - const { name } = gameData; - if (await this.gameRepository.findOne({ name: name, id: Not(id) })) { - throw new HttpException('Game already exists', HttpStatus.BAD_REQUEST); - } - // update game entry in db - const updatedGame = await this.gameRepository.create({ - ...gameData, - factions: null, - objective_points: null, + // checks if a game with the same name exists already + const { name } = gameData; + if (await this.gameRepository.findOne({ name: name, id: Not(id) })) { + throw new HttpException('Game already exists', HttpStatus.BAD_REQUEST); + } + // update game entry in db + const updatedGame = await this.gameRepository.create({ + ...gameData, + factions: null, + objective_points: null, + }); + updatedGame['id'] = id; + const gameId = await this.gameRepository.save(updatedGame); + + // get all the factions that are associated with the game to deny duplicate entries + const factions = await this.factionRepository.find(gameId); + const factionNames = factions.map(({ factionName }) => factionName); + // add the factions to db + if (gameData.factions) { + gameData.factions.map(async faction => { + if (!Object.values(factionNames).includes(faction.factionName)) { + let name = await this.factionRepository.create({ + ...faction, + gameId: gameId, + }); + await this.factionRepository.insert(name); + } }); - updatedGame['id'] = id; - const gameId = await this.gameRepository.save(updatedGame); - - // get all the factions that are associated with the game to deny duplicate entries - const factions = await this.factionRepository.find(gameId); - const factionNames = factions.map(({ factionName }) => factionName); - // add the factions to db - if (gameData.factions) { - gameData.factions.map(async faction => { - if (!Object.values(factionNames).includes(faction.factionName)) { - let name = await this.factionRepository.create({ - ...faction, - gameId: gameId, - }); - await this.factionRepository.insert(name); - } - }); - } + } - // get old flagboxes to deny duplicate entries - const flagboxes = await this.objectivePointRepository.find({ - game: gameId, + // get old flagboxes to deny duplicate entries + const flagboxes = await this.objectivePointRepository.find({ + game: gameId, + }); + const flagboxIds = flagboxes.map( + ({ objectivePointDescription }) => objectivePointDescription, + ); + // insert the flagboxes to db + if (gameData.objective_points) { + gameData.objective_points.map(async flagbox => { + if ( + !Object.values(flagboxIds).includes(flagbox.objectivePointDescription) + ) { + let newFlagbox = await this.objectivePointRepository.create({ + ...flagbox, + game: gameId, + }); + await this.objectivePointRepository.insert(newFlagbox); + } }); - const flagboxIds = flagboxes.map( - ({ objectivePointDescription }) => objectivePointDescription, - ); - // insert the flagboxes to db - if (gameData.objective_points) { - gameData.objective_points.map(async flagbox => { - if ( - !Object.values(flagboxIds).includes( - flagbox.objectivePointDescription, - ) - ) { - let newFlagbox = await this.objectivePointRepository.create({ - ...flagbox, - game: gameId, - }); - await this.objectivePointRepository.insert(newFlagbox); - } - }); - } + } - // TO DO: ADD FLAGBOX LOCATION TO MAPDRAWING ENTITY + // TO DO: ADD FLAGBOX LOCATION TO MAPDRAWING ENTITY - return { - message: 'Game updated', - }; - } catch (error) { - return error; - } + return { + message: 'Game updated', + }; } async deleteGame(id) { @@ -142,87 +132,71 @@ export class GameService { // checks the password, creates an entry in GamePerson table with associated role&faction async createGroup(person, gameId, groupData) { - try { - // check if the person already is in a group in this game - const checkDuplicate = await this.game_PersonRepository.findOne({ - person: person, - }); - if (checkDuplicate) { - throw new HttpException( - 'You already belong to a group!', - HttpStatus.BAD_REQUEST, - ); - } - - // create a group entry and insert it to db - const group = await this.game_GroupRepository.create({ - ...groupData, - game: gameId, - }); - const gameGroup = await this.game_GroupRepository.insert(group); + // check if the person already is in a group in this game + const checkDuplicate = await this.game_PersonRepository.findOne({ + person: person, + }); + if (checkDuplicate) { + throw new HttpException( + 'You already belong to a group!', + HttpStatus.BAD_REQUEST, + ); + } - // create game_Person entry and insert it to db - const gamePerson = await this.game_PersonRepository.create({ - role: 'soldier', - faction: null, - game: gameId, - person: person, - leaderGroup: gameGroup.identifiers[0]['id'], - group: gameGroup.identifiers[0]['id'], - }); - await this.game_PersonRepository.insert(gamePerson); + // create a group entry and insert it to db + const group = await this.game_GroupRepository.create({ + ...groupData, + game: gameId, + }); + const gameGroup = await this.game_GroupRepository.insert(group); + + // create game_Person entry and insert it to db + const gamePerson = await this.game_PersonRepository.create({ + role: 'soldier', + faction: null, + game: gameId, + person: person, + leaderGroup: gameGroup.identifiers[0]['id'], + group: gameGroup.identifiers[0]['id'], + }); + await this.game_PersonRepository.insert(gamePerson); - return { - message: 'created new group', - }; - } catch (e) { - return e; - } + return { + message: 'created new group', + }; } async showGroups() { - try { - return await this.game_GroupRepository.find({ - relations: ['leader', 'players', 'game'], - }); - } catch (e) { - return e; - } + return await this.game_GroupRepository.find({ + relations: ['leader', 'players', 'game'], + }); } async joinGroup(person, groupId) { - try { - const gameData = await this.game_GroupRepository.findOne({ - where: { id: groupId }, - relations: ['players', 'game'], - }); - const gamePerson = await this.game_PersonRepository.create({ - role: 'soldier', - faction: null, - game: gameData.game, - person: person, - leaderGroup: null, - group: groupId, - }); - await this.game_PersonRepository.insert(gamePerson); - return { - message: 'Joined group', - }; - } catch (e) { - return e; - } + const gameData = await this.game_GroupRepository.findOne({ + where: { id: groupId }, + relations: ['players', 'game'], + }); + const gamePerson = await this.game_PersonRepository.create({ + role: 'soldier', + faction: null, + game: gameData.game, + person: person, + leaderGroup: null, + group: groupId, + }); + await this.game_PersonRepository.insert(gamePerson); + return { + message: 'Joined group', + }; } // returns name and id of each game async listGames() { - try { - const games = await this.gameRepository.find(); - return games.map(game => { - return game.gameObject(); - }); - } catch (error) { - return error; - } + const games = await this.gameRepository.find(); + return games.map(game => { + return game.gameObject(); + }); } // returns information about a game identified by id diff --git a/src/user/user.service.ts b/src/user/user.service.ts index 572e4bddc53145692ee3f6b2aed4daf323c859a0..d491865f5177d2f6bbaab607da0c2a1a51711a48 100644 --- a/src/user/user.service.ts +++ b/src/user/user.service.ts @@ -1,6 +1,6 @@ import { Injectable, HttpException, HttpStatus } from '@nestjs/common'; -import { Repository } from "typeorm"; -import { InjectRepository } from "@nestjs/typeorm"; +import { Repository } from 'typeorm'; +import { InjectRepository } from '@nestjs/typeorm'; import { PersonEntity } from './user.entity'; import { UserDTO } from './user.dto'; @@ -9,56 +9,51 @@ import { GameDTO } from '../game/game.dto'; @Injectable() export class UserService { - constructor( - @InjectRepository(PersonEntity) - private userRepository: Repository<PersonEntity>, - @InjectRepository(GameEntity) - private gameRepository: Repository<GameEntity> - ) { } + constructor( + @InjectRepository(PersonEntity) + private userRepository: Repository<PersonEntity>, + @InjectRepository(GameEntity) + private gameRepository: Repository<GameEntity>, + ) {} - async register(data: UserDTO) { - const { name } = data; - let user = await this.userRepository.findOne({ where: { name } }); - if (user) { - throw new HttpException('User already exists', HttpStatus.BAD_REQUEST); - } - user = await this.userRepository.create(data); - await this.userRepository.save(user); - return user.tokenObject(); + async register(data: UserDTO) { + const { name } = data; + let user = await this.userRepository.findOne({ where: { name } }); + if (user) { + throw new HttpException('User already exists', HttpStatus.BAD_REQUEST); } + user = await this.userRepository.create(data); + await this.userRepository.save(user); + return user.tokenObject(); + } - async login(data: UserDTO) { - try { - const { name, password } = data; - const user = await this.userRepository.findOne({ where: { name } }); - if (!user || !(await user.comparePassword(password))) { - throw new HttpException('invalid password', HttpStatus.BAD_REQUEST); - } - return user.tokenObject(); - } catch (error) { - throw new HttpException(error.message, HttpStatus.BAD_REQUEST); - } + async login(data: UserDTO) { + const { name, password } = data; + const user = await this.userRepository.findOne({ where: { name } }); + if (!user || !(await user.comparePassword(password))) { + throw new HttpException('invalid password', HttpStatus.BAD_REQUEST); } + return user.tokenObject(); + } - // liitytään peliin - async joinGame(game: GameDTO, data: UserDTO) { - try { - // etsi peli valinnan mukaan ja otetaan käyttäjän rooli kyseisestä pelistä talteen - const role = await this.gameRepository.findOne(); - return role; - } catch (error) { - return error.message; - } + // liitytään peliin + async joinGame(game: GameDTO, data: UserDTO) { + try { + // etsi peli valinnan mukaan ja otetaan käyttäjän rooli kyseisestä pelistä talteen + const role = await this.gameRepository.findOne(); + return role; + } catch (error) { + return error.message; } + } - // liitytään factionii - async joinFaction(game: GameDTO, data: UserDTO): Promise<boolean> { - try { - // tarkistetaan factionin salasana - return true; - } catch (error) { - return error; - } + // liitytään factionii + async joinFaction(game: GameDTO, data: UserDTO): Promise<boolean> { + try { + // tarkistetaan factionin salasana + return true; + } catch (error) { + return error; } - + } }