From 59ac6f00c6cd87132383f290dd6fed012502c853 Mon Sep 17 00:00:00 2001
From: rpapin <rpapin@grandlyon.com>
Date: Thu, 17 Dec 2020 12:02:06 +0100
Subject: [PATCH] init route logic

---
 src/components/Quiz/QuizBegin.tsx | 31 +++++++++++--------------------
 src/enum/userChallenge.enum.ts    |  1 +
 src/locales/fr.json               |  3 +++
 src/services/challenge.service.ts | 11 +++++++++++
 src/services/quiz.service.ts      |  7 +++++++
 5 files changed, 33 insertions(+), 20 deletions(-)

diff --git a/src/components/Quiz/QuizBegin.tsx b/src/components/Quiz/QuizBegin.tsx
index 60f30af7e..474b7ced5 100644
--- a/src/components/Quiz/QuizBegin.tsx
+++ b/src/components/Quiz/QuizBegin.tsx
@@ -7,6 +7,10 @@ import quizStars from 'assets/icons/visu/quiz/quizStars.svg'
 import StyledStopButton from 'components/CommonKit/Button/StyledStopButton'
 import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
 import { useDispatch, useSelector } from 'react-redux'
+import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
+import ChallengeService from 'services/challenge.service'
+import { setChallengeConsumption } from 'store/challenge/challenge.actions'
+import { UserChallenge } from 'models'
 
 interface QuizBeginProps {
   userChallenge: UserChallenge
@@ -17,33 +21,20 @@ const QuizBegin: React.FC<QuizBeginProps> = ({
 }: QuizBeginProps) => {
   const client: Client = useClient()
   const { t } = useI18n()
-  const [height, setHeight] = useState<number>(0)
 
   const launchQuiz = useCallback(async () => {
-    // if (fluidTypes.length > 0) {
-    //   const challengeService = new ChallengeService(client)
-    //   const updatedChallenge = await challengeService.updateUserChallenge(
-    //     userChallenge,
-    //     UserChallengeUpdateFlag.DUEL_START
-    //   )
-    //   const dataloads = await challengeService.getUserChallengeDataload(
-    //     updatedChallenge
-    //   )
-    //   dispatch(setChallengeConsumption(updatedChallenge, dataloads))
-    // } else {
-    //   return toggleNoFluidModal()
-    // }
-  }, [])
-
-  useEffect(() => {
-    console.log(userChallenge)
-  }, [])
+    const challengeService = new ChallengeService(client)
+    challengeService.updateUserChallenge(
+      userChallenge,
+      UserChallengeUpdateFlag.QUIZ_START
+    )
+  }, [client, userChallenge])
 
   return (
     <div className="quiz-begin-container">
       <StyledIcon className="quiz-icon" icon={quizIcon} size={219} />
       <StyledIcon className="quiz-icon" icon={quizStars} size={219} />
-      <div className="quiz-explanation">{t('duel.explanation')}</div>
+      <div className="quiz-explanation">{t('quiz.explanation')}</div>
       <div className="button-start">
         <StyledStopButton color="secondary" onClick={launchQuiz}>
           {t('duel.start_button')}
diff --git a/src/enum/userChallenge.enum.ts b/src/enum/userChallenge.enum.ts
index a364ca5a8..41eaf99fa 100644
--- a/src/enum/userChallenge.enum.ts
+++ b/src/enum/userChallenge.enum.ts
@@ -7,6 +7,7 @@ export enum UserChallengeUpdateFlag {
   DUEL_WIN = 14,
   DUEL_LOSS = 15,
   QUIZ = 20,
+  QUIZ_START = 21,
   MISSION = 30,
 }
 
diff --git a/src/locales/fr.json b/src/locales/fr.json
index 86bc5cc7e..311a66e23 100644
--- a/src/locales/fr.json
+++ b/src/locales/fr.json
@@ -390,5 +390,8 @@
       "message2": "et presque gagné un ours polaire...",
       "button": "Dommage..."
     }
+  },
+  "quiz" : {
+    "explanation" : "Répondez correctement au 5 questions et remportez 5 des 15 étoiles nécessaires pour débloquer le défi final"
   }
 }
diff --git a/src/services/challenge.service.ts b/src/services/challenge.service.ts
index be94502bb..ac26199d4 100644
--- a/src/services/challenge.service.ts
+++ b/src/services/challenge.service.ts
@@ -26,6 +26,7 @@ import DuelService from 'services/duel.service'
 import QuizService from 'services/quiz.service'
 import ConsumptionDataManager from 'services/consumption.service'
 import { getRelationship } from 'utils/utils'
+import quizService from 'services/quiz.service'
 
 export default class ChallengeService {
   private readonly _client: Client
@@ -290,7 +291,9 @@ export default class ChallengeService {
   ): Promise<UserChallenge> {
     let updatedUserChallenge: UserChallenge
     let updatedDuel = userChallenge.duel
+    let updatedQuiz = userChallenge.quiz
     const duelService = new DuelService(this._client)
+    const quizService = new QuizService(this._client)
     switch (flag) {
       case UserChallengeUpdateFlag.CHALLENGE:
       case UserChallengeUpdateFlag.DUEL_CONSUMPTION:
@@ -350,6 +353,14 @@ export default class ChallengeService {
           success: UserChallengeSuccess.LOST,
         }
         break
+      case UserChallengeUpdateFlag.QUIZ_START:
+        updatedQuiz = await quizService.startUserQuiz(userChallenge.quiz)
+        updatedUserChallenge = {
+          ...userChallenge,
+          quiz: updatedQuiz,
+        }
+        console.log(updatedUserChallenge)
+        break
       default:
         updatedUserChallenge = userChallenge
         break
diff --git a/src/services/quiz.service.ts b/src/services/quiz.service.ts
index 8b1f0afa1..e934815f1 100644
--- a/src/services/quiz.service.ts
+++ b/src/services/quiz.service.ts
@@ -127,4 +127,11 @@ export default class QuizService {
     }
     return userQuiz
   }
+  public async startUserQuiz(userQuiz: UserQuiz): Promise<UserQuiz> {
+    const updatedUserQuiz: UserQuiz = {
+      ...userQuiz,
+      state: QuizState.ONGOING,
+    }
+    return updatedUserQuiz
+  }
 }
-- 
GitLab