From 25cbb79c11a9860d6be04e53e0e12ae76e053f0e Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:18:52 +0100
Subject: [PATCH 1/7] chore: removed unused comments

---
 screens/PlayingQuiz/EndQuiz/EndQuiz.tsx | 75 -------------------------
 1 file changed, 75 deletions(-)

diff --git a/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx b/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx
index 8297ee0..2d567b3 100644
--- a/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx
+++ b/screens/PlayingQuiz/EndQuiz/EndQuiz.tsx
@@ -35,78 +35,3 @@ const styles = StyleSheet.create({
         flexDirection: 'column',
     },
 });
-
-
-
-// import DefaultButton from "../../components/DefaultButton";
-// import { TextsStyles } from "../../styles/TextsStyles";
-// import { ButtonsStyles } from "../../styles/ButtonsStyles";
-// import {useTranslation} from "react-i18next";
-// import QuizModel from "../../models/QuizModel";
-// import {NavigationProp, RouteProp} from "@react-navigation/native";
-
-// type RoutePropsType = {
-//     EndQuiz: {
-//         quiz: QuizModel;
-//     };
-// };
-
-// interface Props {
-//     navigation: NavigationProp<any>;
-//     route: RouteProp<RoutePropsType, "EndQuiz">;
-// }
-
-// export default function EndQuiz({ navigation, route }: Props) {
-//     const { quiz } = route.params;
-//     const {t} = useTranslation();
-//     const handleButtonRePlayPressed = () => {
-//         quiz.nbActualQuestion = 1;
-//         quiz.score = 0;
-//         navigation.reset({
-//             index: 0,
-//             routes: [
-//                 {
-//                     name: "PlayingQuiz",
-//                     params: {quiz: quiz},
-//                 },
-//             ]
-//         });
-//     }
-
-//     const handleButtonHomePressed = () => {
-//         navigation.navigate('Home');
-//     }
-
-//     return (
-//         <View style={styles.container}>
-//             <Image source={require('../../assets/FondTemplate.png')} style={styles.image}/>
-//             <Text style={TextsStyles.titleText}>{t("app.screens.endQuiz.score")} : {quiz.score}</Text>
-//             <Text style={TextsStyles.subtitleText}>{((quiz.score/quiz.nbQuestions)*100 > 50 ) ? t("app.screens.endQuiz.lose") : t("app.screens.endQuiz.win")}</Text>
-//             <View style={styles.buttonContainer}>
-//                 <DefaultButton text={t("app.screens.endQuiz.replay")} handleButtonPressed={handleButtonRePlayPressed} buttonStyle={ButtonsStyles.defaultButton}></DefaultButton>
-//                 <DefaultButton text={t("app.screens.endQuiz.goHome")} handleButtonPressed={handleButtonHomePressed}></DefaultButton>
-//             </View>
-//         </View>
-//     )
-// }
-
-// const styles = StyleSheet.create({
-//     container: {
-//         display: 'flex',
-//         width: '100%',
-//         height: '100%',
-//         alignItems: 'center',
-//         justifyContent: 'center',
-//         gap: 10,  
-//     },
-//     buttonContainer: {
-//         width: '80%',
-//         margin: '10%',
-//         gap: 20
-//     },
-//     image: {
-//         width: '100%',
-//         height: '100%',
-//         position: 'absolute',
-//     },
-// });
\ No newline at end of file
-- 
GitLab


From 7557b98b9e70f03e1eea7518ba2ffd95896e33df Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:19:39 +0100
Subject: [PATCH 2/7] feat: added the EndQuizMulti screen

---
 .../PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx |  41 +++++
 .../EndQuizMulti/EndQuizMultiChild.tsx        | 156 ++++++++++++++++++
 2 files changed, 197 insertions(+)
 create mode 100644 screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx
 create mode 100644 screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx

diff --git a/screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx b/screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx
new file mode 100644
index 0000000..1945637
--- /dev/null
+++ b/screens/PlayingQuiz/EndQuizMulti/EndQuizMulti.tsx
@@ -0,0 +1,41 @@
+import {NavigationProp, RouteProp} from "@react-navigation/native";
+import { View, StyleSheet, Image, Text } from "react-native";
+import TemplateMenu from "../../../templates/TemplateMenu";
+import {Quiz} from "../../../models/Quiz";
+import EndQuizChild from "../EndQuiz/EndQuizChild";
+import EndQuizMultiChild from "./EndQuizMultiChild";
+
+type RoutePropsType = {
+    EndQuizChild: {
+        quiz: Quiz;
+    };
+};
+interface Props {
+    route: RouteProp<RoutePropsType, "EndQuizChild">;
+    navigation: NavigationProp<any>;
+}
+
+export default function EndQuizMulti({route,navigation}: Props) {
+    const { quiz } = route.params;
+    return (
+        <View style={styles.containerGlobal}>
+            <TemplateMenu navigation={navigation} headerNavigation={false} buttonGoBack={false}>
+                <View>
+                    <EndQuizMultiChild navigation={navigation} quiz={quiz}/>
+                </View>
+            </TemplateMenu>
+        </View>
+    );
+}
+
+const styles = StyleSheet.create({
+    containerGlobal: {
+        display: 'flex',
+        width: '100%',
+        height: '100%',
+        flexDirection: 'column',
+    },
+});
+
+
+
diff --git a/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx b/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx
new file mode 100644
index 0000000..3ba9918
--- /dev/null
+++ b/screens/PlayingQuiz/EndQuizMulti/EndQuizMultiChild.tsx
@@ -0,0 +1,156 @@
+import { View, Image, Text, StyleSheet } from "react-native";
+import DefaultButton from "../../../components/buttons/DefaultButton";
+import { NavigationProp, RouteProp } from "@react-navigation/native";
+import {Quiz} from "../../../models/Quiz";
+import {useQuizService} from "../../../services/QuizService";
+import HttpError from "../../../services/HttpError";
+import UserScore from "../../../components/PlayingQuiz/EndQuiz/UserScore";
+import UserModel from "../../../models/UserModel";
+import EndQuizListPlayer from "../../../components/PlayingQuiz/EndQuiz/EndQuizListPlayer";
+
+
+
+interface Props {
+    navigation: NavigationProp<any>;
+    quiz: Quiz;
+}
+
+export default function EndQuizMultiChild({ navigation, quiz }: Props) {
+
+    const {restartQuiz, remainingQuiz} = useQuizService()
+
+    const handleRestartPress = async () => {
+        const isRestarted = await restartQuiz(quiz.id);
+        if(HttpError.isHttpError(isRestarted)){
+            console.log(isRestarted.message);
+            return
+        }
+        if(!isRestarted) {
+            return;
+        }
+        const quizRestarted = await remainingQuiz(quiz.id);
+        if(HttpError.isHttpError(quizRestarted)){
+            console.log(quizRestarted.message);
+            return
+        }
+
+        navigation.reset({
+            index: 0,
+            routes: [
+                {
+                    name: "PlayingQuiz",
+                    params: {quizRecovered: quizRestarted},
+                },
+            ]
+        });
+    };
+
+    const handleBackToMenu = () => {
+        navigation.navigate('TabNavigator');
+    };
+    const user = new UserModel(10,"Thomassss", "Thomas");
+
+    return (
+        <View style={styles.container}>
+            <View style={styles.containerHeader}>
+                <Image source={require('../../../assets/TitleApp.png')}/>
+            </View>
+            <View style={styles.containerBody}>
+                <Image
+                    source={require('../../../assets/stars.png')} // URL de l'avatar ou placeholder
+                    style={styles.stars}
+                />
+                <View style={styles.usersContainer}>
+                    <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={false}/>
+                    <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={true}/>
+                    <UserScore user={user} score={10} maxScore={quiz.questionCount} isFirst={false}/>
+                </View>
+                <EndQuizListPlayer users={[new UserModel(1, "user1", "user1@email.com"), new UserModel(2, "user2", "user2@email.com")]} maxScore={quiz.questionCount}/>
+
+                <DefaultButton text="RESTART" handleButtonPressed={handleRestartPress} buttonStyle={styles.whiteButton} buttonText={styles.whiteButtonText}></DefaultButton>
+                <DefaultButton text="BACK TO MENU" handleButtonPressed={handleBackToMenu} buttonStyle={styles.blueButton} buttonText={styles.blueButtonText}></DefaultButton>
+            </View>
+        </View>
+    );
+}
+
+const styles = StyleSheet.create({
+    container: {
+        height: '100%',
+        width: '100%',
+        display: 'flex',
+        flexDirection: 'column',
+        alignItems: 'center',
+        justifyContent: 'space-around'
+    },
+    usersContainer: {
+        display: 'flex',
+        width: '100%',
+        flexDirection: 'row',
+        alignItems: 'center',
+        justifyContent: 'space-around',
+    },
+    containerHeader: {
+        height: '10%',
+        width: '100%',
+        alignItems: 'center',
+    },
+    containerBody: {
+        height: '80%',
+        width: '90%',
+        display: 'flex',
+        flexDirection: 'column',
+        alignItems: 'center',
+        justifyContent: 'space-around',
+        backgroundColor: '#F3F3F3',
+        borderRadius: 40,
+        padding: '5%',
+        shadowColor: "#000",
+        shadowOffset: {
+            width: 0,
+            height: 2,
+        },
+        shadowOpacity: 0.25,
+        shadowRadius: 3.84,
+        elevation: 5,
+    },
+    TextBodyTitle: {
+        textAlign: 'center',
+        fontSize: 24,
+        fontWeight: 'bold',
+    },
+    TextBody: {
+        textAlign: 'center',
+        fontSize: 22,
+        fontWeight: 'bold',
+    },
+    whiteButton: {
+        height: '12%',
+        width: '80%',
+        backgroundColor: '#FFFFFF',
+        borderColor: '#2B73FE',
+        borderWidth: 4,
+        borderRadius: 10,
+        padding: 0
+    },
+    whiteButtonText: {
+        fontSize: 24,
+        fontWeight: 'bold',
+        color: '#2B73FE',
+    },
+    blueButton: {
+        height: '12%',
+        width: '80%',
+        backgroundColor: '#2B73FE',
+        borderRadius: 10,
+        padding: 0
+    },
+    blueButtonText: {
+        fontSize: 24,
+        fontWeight: 'bold',
+        color: '#FFFFFF',
+    },
+    stars: {
+        resizeMode: "cover",
+    },
+});
\ No newline at end of file
-- 
GitLab


From 26d19830c74b148e10fde84ca73ab05285ccea27 Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:20:04 +0100
Subject: [PATCH 3/7] feat: added the EndQuizListPlayer

---
 .../PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx | 86 +++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx

diff --git a/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx b/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx
new file mode 100644
index 0000000..a2378cb
--- /dev/null
+++ b/components/PlayingQuiz/EndQuiz/EndQuizListPlayer.tsx
@@ -0,0 +1,86 @@
+import React from "react";
+import { FlatList, View, Text, StyleSheet, Image } from "react-native";
+import UserModel from "../../../models/UserModel";
+
+interface Props {
+    users: UserModel[];
+    maxScore: number;
+}
+
+export default function EndQuizListPlayer({ users, maxScore }: Props) {
+    const renderUser = ({ item, index }: { item: UserModel; index: number }) => (
+        <View style={[styles.userContainer, index === 0 && styles.firstPlace]}>
+            <Image
+                source={require("../../../assets/ProfilBaseImage.png")} // Replace with actual profile picture if available
+                style={styles.avatar}
+            />
+            <View style={styles.infoContainer}>
+                <Text style={[styles.username, index === 0 && styles.firstPlaceText]}>
+                    {item.username.toUpperCase()}
+                </Text>
+                <Text style={styles.score}>
+                    {10 + index}/{maxScore} {/* Adjust score logic as needed */}
+                </Text>
+            </View>
+        </View>
+    );
+
+    return (
+        <View style={styles.container}>
+            <FlatList
+                data={users}
+                renderItem={renderUser}
+                keyExtractor={(item) => item.id.toString()}
+                showsVerticalScrollIndicator={false}
+            />
+        </View>
+    );
+}
+
+const styles = StyleSheet.create({
+    container: {
+        width: "100%",
+        padding: 20,
+        backgroundColor: "#fff",
+        borderRadius: 20,
+    },
+    userContainer: {
+        flexDirection: "row",
+        alignItems: "center",
+        backgroundColor: "#f9f9f9",
+        borderRadius: 10,
+        padding: 15,
+        marginBottom: 10,
+        shadowColor: "#000",
+        shadowOffset: { width: 0, height: 2 },
+        shadowOpacity: 0.1,
+        shadowRadius: 3,
+        elevation: 2,
+    },
+    firstPlace: {
+        // backgroundColor: "#ffe700",
+        // shadowColor: "#ff9900",
+        // shadowOpacity: 0.3,
+    },
+    avatar: {
+        width: 40,
+        height: 40,
+        borderRadius: 25,
+        marginRight: 15,
+    },
+    infoContainer: {
+        flex: 1,
+    },
+    username: {
+        fontSize: 18,
+        fontWeight: "bold",
+        color: "#333",
+    },
+    firstPlaceText: {
+        // color: "#ff9900",
+    },
+    score: {
+        fontSize: 16,
+        color: "#666",
+    },
+});
-- 
GitLab


From 196e7f0d60eacb4377b54e8a91e820dfdde6a5c5 Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:20:17 +0100
Subject: [PATCH 4/7] feat: added the UserScore

---
 components/PlayingQuiz/EndQuiz/UserScore.tsx | 79 ++++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 components/PlayingQuiz/EndQuiz/UserScore.tsx

diff --git a/components/PlayingQuiz/EndQuiz/UserScore.tsx b/components/PlayingQuiz/EndQuiz/UserScore.tsx
new file mode 100644
index 0000000..d57489c
--- /dev/null
+++ b/components/PlayingQuiz/EndQuiz/UserScore.tsx
@@ -0,0 +1,79 @@
+import UserModel from "../../../models/UserModel";
+import { View, Text, StyleSheet, Image } from "react-native";
+
+interface Props {
+    user: UserModel;
+    score: number;
+    maxScore: number;
+    isFirst: boolean;
+}
+
+export default function UserScore({ user, score, maxScore, isFirst }: Props) {
+
+    function shortenString(input: string): string {
+        if (input.length <= 5) {
+            return input; // Si la chaîne est déjà de 4 caractères ou moins, on la retourne telle quelle
+        }
+        return `${input.slice(0, 5)}...`; // Garde les 4 premiers caractères et ajoute "..."
+    }
+
+    return (
+        <View style={styles.container}>
+            <View style={[styles.avatarContainer, isFirst && styles.firstAvatar]}>
+                <Image
+                    source={require('../../../assets/ProfilBaseImage.png')} // URL de l'avatar ou placeholder
+                    style={styles.avatar}
+                />
+            </View>
+            <Text style={styles.userName}>{shortenString(user.username.toUpperCase())}</Text>
+            <Text style={styles.userScore}>
+                {score}/{maxScore}
+            </Text>
+        </View>
+    );
+}
+
+
+
+const styles = StyleSheet.create({
+    container: {
+        display: "flex",
+        flexDirection: "column",
+        alignItems: "center",
+        justifyContent: "space-around",
+        marginHorizontal: 10,
+    },
+    avatarContainer: {
+        width: 70,
+        height: 70,
+        borderRadius: 50,
+        backgroundColor: "#d9e3f0", // Fond gris clair
+        alignItems: "center",
+        justifyContent: "center",
+    },
+    firstAvatar: {
+        width: 90,
+        height: 90,
+        // borderWidth: 3, // Ajoute une bordure pour le premier utilisateur
+        // borderColor: "#FFD700", // Couleur or pour marquer le premier
+    },
+    avatar: {
+        width: "100%",
+        height: "100%",
+        resizeMode: "cover",
+    },
+    userName: {
+        fontSize: 16,
+        fontWeight: "bold",
+        color: "#000",
+        marginTop: 5,
+        textAlign: "center",
+    },
+    userScore: {
+        fontSize: 14,
+        fontWeight: "500",
+        color: "#333",
+        textAlign: "center",
+        marginTop: 5,
+    },
+});
-- 
GitLab


From 47f3e388626975e4f8e988bbfd7ca13129b4b7fa Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:20:54 +0100
Subject: [PATCH 5/7] feat: added the navigation for EndQuizMulti

---
 routes/StackNavigator.tsx | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/routes/StackNavigator.tsx b/routes/StackNavigator.tsx
index 7f91326..e0b86ca 100644
--- a/routes/StackNavigator.tsx
+++ b/routes/StackNavigator.tsx
@@ -8,6 +8,7 @@ import TabNavigator from "./TabNavigation";
 import PlayQuiz from "../screens/Home/PlayQuiz/PlayQuiz";
 import MyQuizzes from "../screens/Home/MyQuizzes/MyQuizzes";
 import InformationsOfQuiz from "../screens/Community/InformationsOfQuiz/InformationsOfQuiz";
+import EndQuizMulti from "../screens/PlayingQuiz/EndQuizMulti/EndQuizMulti";
 
 const Stack = createNativeStackNavigator();
 
@@ -21,6 +22,7 @@ export default function StackNavigator() {
                 <Stack.Screen name="PlayingQuiz" component={PlayingQuiz} options={{ headerShown: false }}/>
                 <Stack.Screen name="PlayQuiz" component={PlayQuiz} options={{ headerShown: false }}/>
                 <Stack.Screen name="EndQuiz" component={EndQuiz} options={{ headerShown: false }}/>
+                <Stack.Screen name="EndQuizMulti" component={EndQuizMulti} options={{ headerShown: false }}/>
                 <Stack.Screen name="MyQuizzes" component={MyQuizzes} options={{ headerShown: false }}/>
                 <Stack.Screen name="InformationsOfQuiz" component={InformationsOfQuiz} options={{ headerShown: false }}/>
             </Stack.Navigator>
-- 
GitLab


From 09b96f1cdf1382d849a55ed7d5e8ace42a1e9811 Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:21:07 +0100
Subject: [PATCH 6/7] feat: added stars.png

---
 assets/stars.png | Bin 0 -> 6666 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 assets/stars.png

diff --git a/assets/stars.png b/assets/stars.png
new file mode 100644
index 0000000000000000000000000000000000000000..09c430621cb58984d1b88f1e46e5d71c2b9a3284
GIT binary patch
literal 6666
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
U!EG5~)c^nh07*qoM6N<$g1z6<u>b%7

literal 0
HcmV?d00001

-- 
GitLab


From 57198d68e6b983884b461117d381800775b8db6e Mon Sep 17 00:00:00 2001
From: GOEPP THOMAS <thomas@saturne-digital.fr>
Date: Wed, 8 Jan 2025 10:21:39 +0100
Subject: [PATCH 7/7] debug: for go into endquiz screen

---
 screens/Home/Home.tsx | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/screens/Home/Home.tsx b/screens/Home/Home.tsx
index dc3b638..1369070 100644
--- a/screens/Home/Home.tsx
+++ b/screens/Home/Home.tsx
@@ -3,12 +3,35 @@ import TemplateMono from "../../templates/TemplateMono";
 import HomeChild from "./HomeChild";
 import TemplateMenu from "../../templates/TemplateMenu";
 import {NavigationProp} from "@react-navigation/native";
+import {Quiz} from "../../models/Quiz";
 
 interface Props {
     navigation: NavigationProp<any>;
 }
 
 export default function Home({navigation}: Props) {
+    const debugQuiz: Quiz = {
+        id: "debug-quiz-001",
+        name: "Debug Quiz",
+        description: "This is a basic quiz for debugging purposes.",
+        score: 0,
+        questionIndex: 0,
+        questionCount: 0,
+        categoryId: 1,
+        difficultyId: 1,
+        authorId: 1,
+        category: {
+            id: 1,
+            name: "General Knowledge",
+        },
+        difficulty: {
+            id: 1,
+            name: "Easy",
+        },
+        questions: [], // Tableau de questions vide
+    };
+
+    navigation.navigate("EndQuizMulti", {quiz: debugQuiz});
     return (
         <View style={styles.containerGlobal}>
                 <TemplateMenu navigation={navigation} headerNavigation={false} buttonGoBack={false}>
-- 
GitLab