From ff4b1b59b7c221dbaeb1180cd24226aa688c4ac6 Mon Sep 17 00:00:00 2001
From: Thomas Bouquet <thomas.bouquet@student-cs.fr>
Date: Sat, 6 Mar 2021 12:33:23 +0100
Subject: [PATCH] Ajout du classement du sprint + bonne date

---
 back/src/controllers/equipe.controller.js     | 16 ++++-
 back/src/routes/api.js                        |  1 +
 front/src/components/Classement.js            |  9 +++
 .../components/Classement/ClassementSprint.js | 65 +++++++++++++++++++
 .../LeaderboardSB/ClassementEquipe.js         |  2 +-
 .../LeaderboardSB/ClassementIndividuel.js     |  2 +-
 front/src/components/Login/SubmitForm.js      |  2 +-
 7 files changed, 93 insertions(+), 4 deletions(-)
 create mode 100644 front/src/components/Classement/ClassementSprint.js

diff --git a/back/src/controllers/equipe.controller.js b/back/src/controllers/equipe.controller.js
index 829dca1b..b4fc9067 100644
--- a/back/src/controllers/equipe.controller.js
+++ b/back/src/controllers/equipe.controller.js
@@ -50,6 +50,20 @@ function getClassementEquipe(req, res) {
   con.end();
 }
 
+function getSprint(req, res) {
+  var con = mysql.createConnection(dbConfig);
+  var query = "Equipe.name as name,score FROM Score JOIN Equipe ON Equipe.id=Score.equipeId WHERE (Equipe.deleted = 0 AND (Score.deleted = 0 AND Score.participantId = 'sprint')) ORDER BY score DESC;"
+  con.connect();
+  con.query(query, (err, result) => {
+    if (err) {
+      console.log(err)
+      return res.send({ success: false })
+    }
+    return res.send(result)
+  });
+  con.end();
+}
+
 function getEquipes(req, res) {
   var con = mysql.createConnection(dbConfig);
   var query = "SELECT id,name FROM Equipe WHERE deleted = 0 ORDER BY name ASC;"
@@ -124,4 +138,4 @@ function deleteEquipe(req, res) {
 }
 
 
-module.exports = { getClassementEquipe, getEquipes, addNewEquipe, updateEquipe, deleteEquipe, getEquipesByUserId }
+module.exports = { getClassementEquipe, getEquipes, addNewEquipe, updateEquipe, deleteEquipe, getEquipesByUserId, getSprint }
diff --git a/back/src/routes/api.js b/back/src/routes/api.js
index 492c5485..c00bcef7 100644
--- a/back/src/routes/api.js
+++ b/back/src/routes/api.js
@@ -20,6 +20,7 @@ router.get('/nombre_participants', controller.participant.getNombreParticipants)
 router.get('/participants_by_id', controller.participant.getParticipantsById);
 router.get('/participants_ids', controller.participant.getParticipantsIdentifiants);
 router.get('/my_scores', controller.participant.getResultatsPersonnels);
+router.get('/sprint', controller.equipe.getSprint)
 
 router.get('/administrateurs/login', controller.administrateur.getAdminsLogins);
 router.get('/staffeurs/login', controller.staffeurs.getStaffeursLogins);
diff --git a/front/src/components/Classement.js b/front/src/components/Classement.js
index bf0258c0..f3c00ef6 100644
--- a/front/src/components/Classement.js
+++ b/front/src/components/Classement.js
@@ -2,6 +2,7 @@ import React, { Component } from "react";
 import { MDBContainer, MDBRow, MDBCol, MDBTabPane, MDBTabContent, MDBNav, MDBNavItem, MDBNavLink, MDBIcon } from "mdbreact";
 import ClassIndiv from './Classement/ClassementIndividuel';
 import ClassEquipe from './Classement/ClassementEquipe';
+import ClassSprint from './Classement/ClassementSprint';
 
 class Classement extends Component {
   state = {
@@ -38,6 +39,11 @@ class Classement extends Component {
                   <MDBIcon icon="users" className="mr-1" /> Associations
                   </MDBNavLink>
                 </MDBNavItem>
+                <MDBNavItem>
+                  <MDBNavLink link to="#" active={this.state.items["default"] === "3"} onClick={this.togglePills("default", "3")} >
+                  <MDBIcon icon="running" className="mr-1" /> Sprint
+                  </MDBNavLink>
+                </MDBNavItem>
               </MDBNav>
               <MDBTabContent activeItem={this.state.items["default"]}>
                 <MDBTabPane tabId="1">
@@ -46,6 +52,9 @@ class Classement extends Component {
                 <MDBTabPane tabId="2">
                   <ClassEquipe />
                 </MDBTabPane>
+                <MDBTabPane tabId="2">
+                  <ClassSprint />
+                </MDBTabPane>
               </MDBTabContent>
             </MDBCol>
           </MDBRow>
diff --git a/front/src/components/Classement/ClassementSprint.js b/front/src/components/Classement/ClassementSprint.js
new file mode 100644
index 00000000..a5339b21
--- /dev/null
+++ b/front/src/components/Classement/ClassementSprint.js
@@ -0,0 +1,65 @@
+import React, { useState, useEffect } from 'react';
+import axios from 'axios';
+import { MDBDataTableV5 } from 'mdbreact';
+import eventData from "../../eventData/eventData.json";
+
+export default function ClassEquipe() {
+
+  var data = [];
+  var [participants,setParticipants] = useState([]);
+  useEffect(() => {
+    const interval = setInterval(() => {
+      axios.get('/api/sprint').then((response) => setParticipants(response.data));
+    }, 500);
+    return () => clearInterval(interval);
+  }, []);
+
+  function RefreshData() {
+    var i = 1;
+    participants.map((item) => 
+    data.push(
+      {
+        rank: i++,
+        association: item.name,
+        distance: item.score,
+        dons: Math.trunc(item.score*eventData.argentParMetre)+" €"
+      },
+    )
+  );
+  return({
+    columns: [
+      {
+        label: '# Rang',
+        field: 'rank',
+        sort: 'disabled',
+        width: 100,
+      },
+      {
+        label: 'Association',
+        field: 'association',
+        width: 150,
+        sort: 'disabled',
+        attributes: {
+          'aria-controls': 'DataTable',
+          'aria-label': 'Association',
+        },
+      },
+      {
+        label: 'Distance (m)',
+        field: 'distance',
+        sort: 'disabled',
+        width: 100,
+      },
+      {
+        label: 'Dons rapportés',
+        field: 'dons',
+        sort: 'disabled',
+        width: 100,
+      },
+    ],
+    rows: data})
+  }
+
+
+  return <MDBDataTableV5 paging={false} hover striped info={false} data={RefreshData()} searchLabel="Rechercher" responsiveLg />;
+}
\ No newline at end of file
diff --git a/front/src/components/LeaderboardSB/ClassementEquipe.js b/front/src/components/LeaderboardSB/ClassementEquipe.js
index f9320858..058b1ad6 100644
--- a/front/src/components/LeaderboardSB/ClassementEquipe.js
+++ b/front/src/components/LeaderboardSB/ClassementEquipe.js
@@ -22,7 +22,7 @@ const BasicTable = () => {
         <tr>
           <th>#</th>
           <th>Association</th>
-          <th>Distance</th>
+          <th>Distance (m)</th>
           <th>Participants</th>
         </tr>
       </MDBTableHead>
diff --git a/front/src/components/LeaderboardSB/ClassementIndividuel.js b/front/src/components/LeaderboardSB/ClassementIndividuel.js
index f7290b45..100eef11 100644
--- a/front/src/components/LeaderboardSB/ClassementIndividuel.js
+++ b/front/src/components/LeaderboardSB/ClassementIndividuel.js
@@ -22,7 +22,7 @@ const BasicTable = () => {
           <th>#</th>
           <th>Rameuse/Rameur</th>
           <th>Association(s)</th>
-          <th>Distance</th>
+          <th>Distance (m)</th>
         </tr>
       </MDBTableHead>
       <MDBTableBody>
diff --git a/front/src/components/Login/SubmitForm.js b/front/src/components/Login/SubmitForm.js
index 0f9b0ffa..267ac754 100644
--- a/front/src/components/Login/SubmitForm.js
+++ b/front/src/components/Login/SubmitForm.js
@@ -9,7 +9,7 @@ function Submit(props) {
     var realId;
     var realName;
 
-    if (timenow < 0/*eventData.dateFin*/) {
+    if (timenow <= eventData.dateFin) {
         realId = props.participant.value;
         realName = props.participant.label
     }
-- 
GitLab