diff --git a/src/components/quiz/endQuizModal/endQuizModal.tsx b/src/components/quiz/endQuizModal/endQuizModal.tsx
index 8661268f3b470dfbac91153c5179edfc76341e60..ee9b042e63410b1720d0847be8e2338bb31793d3 100644
--- a/src/components/quiz/endQuizModal/endQuizModal.tsx
+++ b/src/components/quiz/endQuizModal/endQuizModal.tsx
@@ -2,6 +2,8 @@ import "./endQuizModal.css";
 import {ModalButton} from "../modalButton/modalButton.tsx";
 import {useNavigate} from "react-router-dom";
 import {Quiz} from "../../../models/Quiz.ts";
+import {useQuizService} from "../../../services/QuizService.ts";
+import HttpError from "../../../services/HttpError.ts";
 
 interface Props {
     isOpen: boolean;
@@ -13,6 +15,23 @@ export const EndQuizModal = ({ isOpen, onClose, quiz }: Props) => {
     if (!isOpen) return null;
     const navigate = useNavigate();
 
+    const {restartQuiz} = useQuizService()
+
+    const handleRestartPress = async () => {
+        const isRestarted = await restartQuiz(quiz.id);
+        if (HttpError.isHttpError(isRestarted)) {
+            console.log(isRestarted.message);
+            return
+        }
+        if (!isRestarted) {
+            return;
+        }
+        // navigate(`/home`);
+        window.location.reload();
+
+        // navigate(`/quiz/${quiz.id}`);
+    }
+
     const handleBackToMenu = () => {
         navigate("/home");
     }
@@ -37,7 +56,7 @@ export const EndQuizModal = ({ isOpen, onClose, quiz }: Props) => {
                     />
                 </div>
                 <div className="end-quiz-modal-button-container">
-                    <ModalButton text="RESTART" onClick={onClose} isLeftButton={true} isDisabled={false}/>
+                    <ModalButton text="RESTART" onClick={handleRestartPress} isLeftButton={true} isDisabled={false}/>
                     <ModalButton text="BACK TO MENU" onClick={handleBackToMenu} isLeftButton={false} isDisabled={false}/>
                 </div>
             </div>
diff --git a/src/routes/quiz/playingQuiz.tsx b/src/routes/quiz/playingQuiz.tsx
index c7fa9e97e1bbd8f621a6fe2190d9569313df9e6f..85a26b586e30103ff830f12d0de7519ebfe40518 100644
--- a/src/routes/quiz/playingQuiz.tsx
+++ b/src/routes/quiz/playingQuiz.tsx
@@ -34,7 +34,7 @@ export function PlayingQuiz() {
             setErrorMessage(quizFetched.message);
             return;
         }
-        if (quizFetched.questionIndex >= quizFetched.questionCount) {
+        if (quizFetched.questionIndex-1 >= quizFetched.questionCount) {
             setQuizState(QuizState.ERROR);
             setErrorMessage("You already finished the quiz");
             return;
diff --git a/src/services/QuizService.ts b/src/services/QuizService.ts
index dba04f75acc1725929a7d3e1d086249a893da47c..32519d738d2e157970f1b33856ba9f58d91c3093 100644
--- a/src/services/QuizService.ts
+++ b/src/services/QuizService.ts
@@ -166,6 +166,26 @@ export const useQuizService = () => {
         }
     };
 
+    const restartQuiz = async (id: string) : Promise<boolean | HttpError> => {
+        try {
+            const requestBody = {
+                id
+            };
+
+            await axios.patch(`${url}/quiz/restart`, requestBody, {
+                withCredentials: true,
+            });
+
+            return true;
+        } catch (error: any) {
+            if (error.response) {
+                return new HttpError(error.response.status, error.response.data?.message);
+            } else {
+                return new HttpError(500, "Unexpected error: " + error.message);
+            }
+        }
+    }
+
 
     return {
         generateQuiz: generateQuiz,
@@ -174,5 +194,6 @@ export const useQuizService = () => {
         getRandomQuiz: getRandomQuiz,
         getCommunityQuiz: getCommunityQuiz,
         getCategories: getCategories,
+        restartQuiz: restartQuiz
     }
 }