57 lines
1.8 KiB
JavaScript
57 lines
1.8 KiB
JavaScript
export class Game {
|
|
constructor (id, questions, created, completed, player1id, player1name, player1answers, player2id, player2name, player2answers) {
|
|
this.id = id
|
|
this.questionIds = questions
|
|
this.created = created
|
|
this.completed = completed
|
|
this.player1id = player1id
|
|
this.player1name = player1name
|
|
this.player1answers = player1answers
|
|
this.player2id = player2id
|
|
this.player2name = player2name
|
|
this.player2answers = player2answers
|
|
this.playerIds = []
|
|
|
|
if (this.player1id) this.playerIds.push(this.player1id)
|
|
if (this.player2id) this.playerIds.push(this.player2id)
|
|
}
|
|
|
|
getResult () {
|
|
const correctAnswersPl1 = this.player1answers.filter(a => a.richtig).length
|
|
const correctAnswersPl2 = this.player2answers.filter(a => a.richtig).length
|
|
|
|
return {
|
|
winner: correctAnswersPl1 > correctAnswersPl2 ? 1 : 2,
|
|
loser: correctAnswersPl1 > correctAnswersPl2 ? 2 : 1,
|
|
tie: correctAnswersPl1 === correctAnswersPl2,
|
|
correctAnswersPl1,
|
|
correctAnswersPl2
|
|
}
|
|
}
|
|
}
|
|
|
|
// Firestore data converter
|
|
export const GameConverter = {
|
|
toFirestore: (game) => {
|
|
return {
|
|
fragen: game.questionIds,
|
|
erstellt: game.created,
|
|
abgeschlossen: game.completed,
|
|
spieler1id: game.player1id,
|
|
spieler1name: game.player1name,
|
|
spieler1antworten: game.player1answers,
|
|
spieler2id: game.player2id,
|
|
spieler2name: game.player2name,
|
|
spieler2antworten: game.player2answers,
|
|
spielerIds: game.playerIds
|
|
}
|
|
},
|
|
fromFirestore: (snapshot, options) => {
|
|
const data = snapshot.data(options)
|
|
return new Game(
|
|
snapshot.id, data.fragen, data.erstellt, data.abgeschlossen,
|
|
data.spieler1id, data.spieler1name, data.spieler1antworten,
|
|
data.spieler2id, data.spieler2name, data.spieler2antworten
|
|
)
|
|
}
|
|
} |