-
Notifications
You must be signed in to change notification settings - Fork 0
/
Quiz.txt
130 lines (90 loc) · 3.59 KB
/
Quiz.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Question Controller
package com.mawule.quizapp.controller;
import com.mawule.quizapp.model.Question;
import com.mawule.quizapp.service.QuestionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
import java.util.List;
@RestController
@RequestMapping("question")
public class QuestionController{
@Autowired
QuestionService questionService;
@GetMapping("allQuestions")
public ResponseEntity<List<Question>> getAllQuestions() {
try {
return questionService.getAllQuestions();
} catch (Exception e) {
e.printStackTrace(); // Log the exception for debugging purposes
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(Collections.emptyList());
}
}
@GetMapping("category/{category}")
public List<Question> getQuestionsByCategory(@PathVariable String category){
return (List<Question>) questionService.getQuestionsByCategory(category);
}
@PostMapping("add")
public ResponseEntity<String> addQuestion(@RequestBody Question question){
return questionService.addquestion(question);
}
@DeleteMapping("delete")
public ResponseEntity<String> updateQuestion(Question question){
return questionService.deletequestion(question);
}
}
Question Service
package com.mawule.quizapp.service;
import com.mawule.quizapp.dao.QuestionDao;
import com.mawule.quizapp.dao.QuizDao;
import com.mawule.quizapp.model.Question;
import com.mawule.quizapp.model.QuestionWrapper;
import com.mawule.quizapp.model.Quiz;
import com.mawule.quizapp.model.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@Service
public class QuizService {
@Autowired
QuizDao quizDao;
@Autowired
QuestionDao questiondao;
public ResponseEntity<String> createquiz(String category, int numQ, String title) {
List<Question> questions = questiondao.findRandomQuestionsByCategory(category,numQ);
Quiz quiz = new Quiz();
quiz.setTitle(title);
quiz.setQuestions(questions);
quizDao.save(quiz);
return new ResponseEntity<>("sucess", HttpStatus.CREATED);
}
public ResponseEntity<List<QuestionWrapper>> getQuizQuestions(Integer id){
Optional<Quiz> quiz = quizDao.findById(id);
List<Question> questionsFromDb = quiz.get().getQuestions();
List<QuestionWrapper> questionsForUser = new ArrayList<>();
for(Question q : questionsFromDb){
QuestionWrapper qw = new QuestionWrapper(q.getId(),q.getQuestionTitle(),q.getOption1(),q.getOption2(),q.getOption3(),q.getOption4());
questionsForUser.add(qw);
}
return new ResponseEntity<>(questionsForUser, HttpStatus.OK);
}
public ResponseEntity<Integer> calculateResult(Integer id, List<Response> responses){
Quiz quiz = quizDao.findById(id).get();
List<Question> questions = quiz.getQuestions();
int right = 0;
int i = 0;
for(Response response : responses){
if(response.getResponse().equals(questions.get(i).getRightAnswer()))
right++;
i++;
}
return new ResponseEntity<>(right, HttpStatus.OK);
}
}