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 81f9f26607efd4e97a0c3698e21dd40dd461c258..46d2adb26882290ab22304fb66da79a1d2f2a8c4 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,14 +1,14 @@ <div class="container"> <p class="title">Join a quiz</p> - <form [formGroup]="form" (ngSubmit)="submitForm()"> + <form [formGroup]="formGroup"> <div class="form-group"> - <input type="text" class="inputRecherche" placeholder="code..." formControlName="code" /> + <input type="text" formControlName="id" class="inputRecherche" placeholder="code..." /> </div> </form> <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> @@ -24,6 +24,6 @@ </div> <div class="new-quiz"> - <button class="blueButton" (click)="joinQuiz()">Go !</button> + <button class="blueButton" (click)="playQuiz()">Go !</button> </div> -</div> \ No newline at end of file +</div> 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 0e091bd7636c3ea057fbd76d9151599cbcb3530f..f5325dd6e57ca202bdd77be5b5523ef4630e718f 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,54 +1,30 @@ -import { Component } from '@angular/core'; -import { FormBuilder, Validators } from '@angular/forms'; -import { FormQuizService } from '../../../../services/form-quiz.service'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, Validators, FormGroup } 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 { - themes: { id: number; name: string }[] = []; - quiz: any; - codeCtrl: any; - form: any; - - constructor(private formQuizService: FormQuizService, private fb: FormBuilder, private router: Router) { } - categories: { id: number; name: string }[] = []; - - ngOnInit(): void { - this.codeCtrl = this.fb.control(null, [Validators.required]); - - this.form = this.fb.group({ - code: this.codeCtrl, - }); - - this.quiz = { - category: "Math", - nbQuestion: 10, - difficulty: "easy", +export class FormStartQuizComponent implements OnInit { + quiz: any; + + constructor(private fb: FormBuilder, private router: Router) {} + formGroup: FormGroup = new FormGroup({}); + ngOnInit(): void { + this.formGroup = new FormGroup({ + id: this.fb.control('', [Validators.required]), + }); + + this.quiz = { + category: "Math", + nbQuestion: 10, + difficulty: "easy", + } } - - } - - submitForm(): void { - if (this.form?.valid) { - this.router.navigate([''/*submit to API*/], { - queryParams: { - code: this.form.value.code, - }, - }); + playQuiz() { + this.router.navigate(['/play-quiz'], { queryParams: { idQuiz: this.formGroup.value.id } }); } - } - - joinQuiz(): void { - this.router.navigate(['/play-quiz'], { - queryParams: { - code: this.form.value.code, - }, - }); - } - } 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 102748abfcca45325554fed8e9d887566c614d2a..d0974dce9de89642e1a43e0d9675352b7bed49e4 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() { 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 edf7be2c820741ba1a197b1b5980cacef1fdd9fe..1c4d412b677145a1fef93132af6e3e14b0983939 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 acea61f94e177cab6703f9455b35e0c11628c94e..bb1821c4736163b9caa9b4587c965f3f76711c90 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]]; + } + } } diff --git a/src/app/services/question.service.ts b/src/app/services/question.service.ts index d4d70a1f5ad95666122aa7544cdb03c460cccb77..b39bb73618d068c961934ec3a64c420ec2f76443 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,