From 13bb8926c0e2433bfee192459c3803fdbd943b45 Mon Sep 17 00:00:00 2001 From: Vaclav Pavlicek Date: Sat, 9 Nov 2019 17:56:02 +0100 Subject: [PATCH] Add game over functions. --- functions/src/game/fractions.ts | 35 +---------- functions/src/game/questions.ts | 100 +------------------------------- 2 files changed, 3 insertions(+), 132 deletions(-) diff --git a/functions/src/game/fractions.ts b/functions/src/game/fractions.ts index d2db4b14..ed5e773f 100644 --- a/functions/src/game/fractions.ts +++ b/functions/src/game/fractions.ts @@ -7,38 +7,5 @@ import { CallableContext } from 'firebase-functions/lib/providers/https'; const db = admin.firestore(); export const giveWater = functions.https.onCall(async (data: any, context: CallableContext) => { - const fractionId = data.fractionId; - const water = data.water; - const number = data.number; - - if (fractionId && number && water) { - const userSnap = await db.collection('users').doc(number).get(); - const userData = userSnap.data(); - - const actualScore = propOr(0, 'actualScore', userData); - - if (actualScore >= water && parseInt(water) >= 0) { - await db.collection('users').doc(number).set(assoc('actualScore', actualScore - water, userData)); - await db.runTransaction(t => { - const fractionRef = db.collection('fractions').doc('' + fractionId); - return t.get(fractionRef) - .then(doc => { - const newScore = parseInt(doc.data().score) + parseInt(water); - t.update(fractionRef, {score: newScore}); - return Promise.resolve('Population increased to ' + newScore); - }); - }); - console.log('Success'); - return new WaterGiveSuccessfulResponse(); - } else { - console.log('Water error'); - return new ErrorResponse('Not enought of water.'); - } - } else if (!number) { - return new ErrorResponse('No user id provided.'); - } else if (!fractionId) { - return new ErrorResponse('No fraction id provided.'); - } else { - return new ErrorResponse('Water error.'); - } + return new ErrorResponse('Game over.'); }); \ No newline at end of file diff --git a/functions/src/game/questions.ts b/functions/src/game/questions.ts index c16de128..51b5083f 100644 --- a/functions/src/game/questions.ts +++ b/functions/src/game/questions.ts @@ -7,105 +7,9 @@ import { CallableContext } from 'firebase-functions/lib/providers/https'; const db = admin.firestore(); export const loadQuestion = functions.https.onCall(async (data: any, context: CallableContext) => { - const questionId = data.questionId; - const number = data.number; - - if (questionId && number) { - const userSnap = await db.collection('users').doc(number).get(); - if (userSnap.exists) { - const userData = await userSnap.data(); - const containsQuestionId = pipe( - propOr([], 'answeredQuestions'), - contains(questionId), - )(userData); - - if (containsQuestionId) { - return new ErrorResponse('Question already answered.'); - } else { - const questionSnap = await db.collection('questions').doc(questionId).get(); - - if (questionSnap.exists) { - const question = questionSnap.data(); - if (question.pointsOnly) { - userData.totalScore = propOr(0, 'totalScore', userData) + propOr(0, 'score', question); - userData.actualScore = propOr(0, 'actualScore', userData) + propOr(0, 'score', question); - userData.answeredQuestions = pipe( - propOr([], 'answeredQuestions'), - append(questionId) - )(userData); - - await db.collection('users').doc(number).set(userData); - - return new PointsOnlyResponse(propOr(0, 'score', question)); - } else { - return new QuestionResponse(pipe( - dissoc('correctAnswer'), - dissoc('score'), - )(question)); - } - } else { - return new ErrorResponse('Question with this ID does not exist.'); - } - } - } else { - return new ErrorResponse('User not found.'); - } - } else if (!questionId) { - return new ErrorResponse('No question id provided.'); - } else { - return new ErrorResponse('No user id provided.'); - } + return new ErrorResponse('Game over.'); }); export const answerQuestion = functions.https.onCall(async (data: any, context: CallableContext) => { - const questionId = data.questionId; - const number = data.number; - const answer = data.answer; - - if (questionId && number && answer) { - const userSnap = await db.collection('users').doc(number).get(); - if (userSnap.exists) { - const userData = await userSnap.data(); - const containsQuestionId = pipe( - propOr([], 'answeredQuestions'), - contains(questionId), - )(userData); - - if (containsQuestionId) { - return new ErrorResponse('Question already answered.'); - } else { - const questionSnap = await db.collection('questions').doc(questionId).get(); - if (questionSnap.exists) { - const question = questionSnap.data(); - userData.answeredQuestions = pipe( - propOr([], 'answeredQuestions'), - append(questionId) - )(userData); - - if (question.correctAnswer === parseInt(answer)) { - userData.totalScore = propOr(0, 'totalScore', userData) + propOr(0, 'score', question); - userData.actualScore = propOr(0, 'actualScore', userData) + propOr(0, 'score', question); - } - - await db.collection('users').doc(number).set(userData); - - if (question.correctAnswer === parseInt(answer)) { - return new CorrectAnswerResponse(question.score); - } else { - return new WrongAnswerResponse(); - } - } else { - return new ErrorResponse('Question with this ID does not exist.'); - } - } - } else { - return new ErrorResponse('User not found.'); - } - } else if (!questionId) { - return new ErrorResponse('No question id provided.'); - } else if (!number) { - return new ErrorResponse('No user id provided.'); - } else { - return new ErrorResponse('No answer id provided.'); - } + return new ErrorResponse('Game over.'); }); \ No newline at end of file