From f9a2fa06ff56879fa3a8111a747de73da8b155a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com>
Date: Thu, 5 Dec 2024 23:56:36 +0100
Subject: [PATCH 1/5] feat: Add getQuiz route

---
 src/app/services/question.service.ts | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/app/services/question.service.ts b/src/app/services/question.service.ts
index d4d70a1..b39bb73 100644
--- a/src/app/services/question.service.ts
+++ b/src/app/services/question.service.ts
@@ -22,6 +22,10 @@ export class QuestionService {
         return this.http.post(`${this.apiUrl}/quiz/create`, body);
     }
 
+    getQuiz(idQuiz: string) {
+        return this.http.post(`${this.apiUrl}/quiz/remaining`, { id: idQuiz });
+    }
+
     getAnswer(codeQuiz: string, questionId: number, answerId: number) {
         return this.http.post(`${this.apiUrl}/quiz/answer`, {
             id: codeQuiz,
-- 
GitLab


From 3bfae1d6e8413f7fc35fef2bdc7902fdab9e8f72 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com>
Date: Thu, 5 Dec 2024 23:57:25 +0100
Subject: [PATCH 2/5] fix: Changes query params to recieve idQuiz instead of
 datas for creation quiz

---
 .../home/play-quiz/play-quiz.component.html   |  2 +-
 .../home/play-quiz/play-quiz.component.ts     | 21 +++++++++----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/app/modules/home/play-quiz/play-quiz.component.html b/src/app/modules/home/play-quiz/play-quiz.component.html
index edf7be2..1c4d412 100644
--- a/src/app/modules/home/play-quiz/play-quiz.component.html
+++ b/src/app/modules/home/play-quiz/play-quiz.component.html
@@ -1,7 +1,7 @@
 <div *ngIf="!isLoading" class="main">
     <div class="header">
         <mat-icon (click)="goHome()">home</mat-icon>
-        <p>Category : {{ actualQuestion.category }}</p>
+        <p>Category : {{ actualQuestion.category.name }}</p>
         <div class="title">
             <h4>Question {{ actualQuestionIndex + 1 }}/{{ quiz.questions.length }}</h4>
             <h4>Score : {{ score }}</h4>
diff --git a/src/app/modules/home/play-quiz/play-quiz.component.ts b/src/app/modules/home/play-quiz/play-quiz.component.ts
index acea61f..bb1821c 100644
--- a/src/app/modules/home/play-quiz/play-quiz.component.ts
+++ b/src/app/modules/home/play-quiz/play-quiz.component.ts
@@ -25,13 +25,11 @@ export class PlayQuizComponent implements OnInit {
     ngOnInit(): void {
         this.isLoading = true;
         this.activatedRoute.queryParams.subscribe((params) => {
-            const nbQuestions = params['nbQuestions'];
-            const difficulty = params['difficulty'];
-            const category = params['category'];
-            this.questionSerivce.createQuiz(nbQuestions, category, difficulty).subscribe({
+            const idQuiz = params['idQuiz'];
+            this.questionSerivce.getQuiz(idQuiz).subscribe({
                 next: (data: any) => {
-                    console.log('data : ', data);
                     this.quiz = data;
+                    this.quiz.Question;
                     this.nextQuestion();
                     this.isLoading = false;
                 },
@@ -61,6 +59,7 @@ export class PlayQuizComponent implements OnInit {
         } else {
             this.actualQuestionIndex++;
             this.actualQuestion = this.quiz.questions[this.actualQuestionIndex];
+            this.randomArray(this.actualQuestion.answers);
             this.showNextQuestion = false;
         }
     }
@@ -101,10 +100,10 @@ export class PlayQuizComponent implements OnInit {
         });
     }
 
-    // randomArray(array: any[]): void {
-    //     for (let i = array.length - 1; i > 0; i--) {
-    //         const j = Math.floor(Math.random() * (i + 1));
-    //         [array[i], array[j]] = [array[j], array[i]];
-    //     }
-    // }
+    randomArray(array: any[]): void {
+        for (let i = array.length - 1; i > 0; i--) {
+            const j = Math.floor(Math.random() * (i + 1));
+            [array[i], array[j]] = [array[j], array[i]];
+        }
+    }
 }
-- 
GitLab


From 383de575174d751ea3e0a2598ff3b953c8bed319 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com>
Date: Thu, 5 Dec 2024 23:58:31 +0100
Subject: [PATCH 3/5] feat: Add quick game button

---
 .../home/home-page/home-page.component.ts     | 23 ++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/src/app/modules/home/home-page/home-page.component.ts b/src/app/modules/home/home-page/home-page.component.ts
index 102748a..d0974dc 100644
--- a/src/app/modules/home/home-page/home-page.component.ts
+++ b/src/app/modules/home/home-page/home-page.component.ts
@@ -3,6 +3,8 @@ import { MatDialog } from '@angular/material/dialog';
 import { Router } from '@angular/router';
 import Swal from 'sweetalert2';
 import { FormCreateQuizComponent } from '../form-quiz/form-create-quiz/form-create-quiz.component';
+import { FormQuizService } from '../../../services/form-quiz.service';
+import { QuestionService } from '../../../services/question.service';
 
 @Component({
     selector: 'app-home-page',
@@ -13,7 +15,12 @@ export class HomePageComponent implements OnInit {
     showQuickGame: boolean = false;
     showPlayQuiz: boolean = false;
     showMyQuiz: boolean = false;
-    constructor(public router: Router, public dialog: MatDialog) {}
+    constructor(
+        private router: Router,
+        private dialog: MatDialog,
+        private formQuizService: FormQuizService,
+        private questionService: QuestionService
+    ) {}
     ngOnInit(): void {}
     startParty() {
         Swal.fire({
@@ -46,6 +53,20 @@ export class HomePageComponent implements OnInit {
         this.showQuickGame = true;
         this.showPlayQuiz = false;
         this.showMyQuiz = false;
+        this.formQuizService.getCategory().subscribe({
+            next: (data: any) => {
+                const categories = data.trivia_categories;
+                const difficulty = ['easy', 'medium', 'hard'];
+                const randomCategory = categories[Math.floor(Math.random() * categories.length)];
+                const randomDifficulty = difficulty[Math.floor(Math.random() * difficulty.length)];
+                const randomNbQuestion = Math.floor(Math.random() * (40 - 10 + 1)) + 10;
+                this.questionService.createQuiz(randomNbQuestion, randomCategory.id, randomDifficulty).subscribe({
+                    next: (data: any) => {
+                        this.router.navigate(['/play-quiz'], { queryParams: { idQuiz: data.id } });
+                    },
+                });
+            },
+        });
     }
 
     playQuiz() {
-- 
GitLab


From 8ee8daa52b860abc67d442b53911f7593537d37e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com>
Date: Fri, 6 Dec 2024 00:00:52 +0100
Subject: [PATCH 4/5] feat: Add start quiz component

---
 .../form-start-quiz.component.html            |  5 +++-
 .../form-start-quiz.component.ts              | 23 ++++++++++++++-----
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
index a8ac5f2..3e18196 100644
--- a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
+++ b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
@@ -1 +1,4 @@
-<p>form-start-quiz works!</p>
+<form [formGroup]="formGroup">
+    <input type="text" formControlName="id" placeholder="CODE QUIZ" />
+    <button class="btn questionsButton" (click)="playQuiz()">PLAY</button>
+</form>
diff --git a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts
index 9769865..63e2bd3 100644
--- a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts
+++ b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.ts
@@ -1,10 +1,21 @@
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { Router } from '@angular/router';
 
 @Component({
-  selector: 'app-form-start-quiz',
-  templateUrl: './form-start-quiz.component.html',
-  styleUrl: './form-start-quiz.component.css'
+    selector: 'app-form-start-quiz',
+    templateUrl: './form-start-quiz.component.html',
+    styleUrl: './form-start-quiz.component.css',
 })
-export class FormStartQuizComponent {
-
+export class FormStartQuizComponent implements OnInit {
+    constructor(private fb: FormBuilder, private router: Router) {}
+    formGroup: FormGroup = new FormGroup({});
+    ngOnInit(): void {
+        this.formGroup = new FormGroup({
+            id: this.fb.control('', [Validators.required]),
+        });
+    }
+    playQuiz() {
+        this.router.navigate(['/play-quiz'], { queryParams: { idQuiz: this.formGroup.value.id } });
+    }
 }
-- 
GitLab


From 1607e317ce9e0fca0664091b59648fc1f0985096 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Th=C3=A9ophile=20HUSS?= <theophile.huss@gmail.com>
Date: Fri, 6 Dec 2024 00:37:37 +0100
Subject: [PATCH 5/5] fix: Remove merge comment

---
 .../form-quiz/form-start-quiz/form-start-quiz.component.html | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
index fd2fcf9..46d2adb 100644
--- a/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
+++ b/src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
@@ -1,4 +1,3 @@
-<<<<<<< src/app/modules/home/form-quiz/form-start-quiz/form-start-quiz.component.html
 <div class="container">
     <p class="title">Join a quiz</p>
     <form [formGroup]="formGroup">
@@ -9,7 +8,7 @@
     <div class="quiz-info">
         <div class="quiz-title">
             <p class="quiz-info-title">Quiz information</p>
-            <hr>
+            <hr />
         </div>
         <div class="quiz-info-content">
             <p class="quiz-info-content-value">{{ quiz.category }}</p>
@@ -27,4 +26,4 @@
     <div class="new-quiz">
         <button class="blueButton" (click)="playQuiz()">Go !</button>
     </div>
-</div>
\ No newline at end of file
+</div>
-- 
GitLab