From e8115808e5de325182c286600ed62948cdd8632e Mon Sep 17 00:00:00 2001
From: Fabien Zucchet <fabien.zucchet@student-cs.fr>
Date: Sat, 21 Mar 2020 23:53:20 +0100
Subject: [PATCH] =?UTF-8?q?feat:=20add=20classements=20par=20=C3=A9quipe?=
 =?UTF-8?q?=20et=20individuel?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 back/index.js                                 | 14 +++++++--
 front/src/app/accueil/Accueil.js              |  8 -----
 .../app/classementEquipe/ClassementEquipe.js  |  6 +++-
 .../TableauClassementEquipes.js               | 30 +++++++++++++++++++
 .../ClassementIndividuel.js                   |  6 +++-
 .../TableauClassementIndividuel.js            | 30 +++++++++++++++++++
 front/src/index.js                            |  2 +-
 7 files changed, 82 insertions(+), 14 deletions(-)
 create mode 100644 front/src/app/classementEquipe/TableauClassementEquipes.js
 create mode 100644 front/src/app/classementIndividuel/TableauClassementIndividuel.js

diff --git a/back/index.js b/back/index.js
index b51f99fe..1c5b2f6a 100644
--- a/back/index.js
+++ b/back/index.js
@@ -19,10 +19,18 @@ app.listen(process.env.REACT_APP_SERVER_PORT, () => {
   console.log(`App server now listening on port ${process.env.REACT_APP_SERVER_PORT}`);
 });
 
-app.get('/test', (req, res) => {
-  const { table } = 'Equipe';
+app.get('/classement_par_equipes', (req, res) => {
+  pool.query(`SELECT Equipe.name,SUM(score) AS score,COUNT(participantId) AS nbParticipant,COUNT(score) AS nbScores FROM Score JOIN Equipe ON Equipe.id=Score.equipeId GROUP BY equipeId;`, (err, results) => {
+    if (err) {
+      return res.send(err);
+    } else {
+      return res.send(results);
+    }
+  });
+});
 
-  pool.query(`select * from ${table}`, (err, results) => {
+app.get('/classement_individuel', (req, res) => {
+  pool.query(`SELECT Participant.name,SUM(score) AS score,COUNT(equipeId) AS nbEquipes,COUNT(score) AS nbScores FROM Score JOIN Participant ON Participant.id=Score.participantId GROUP BY participantId;`, (err, results) => {
     if (err) {
       return res.send(err);
     } else {
diff --git a/front/src/app/accueil/Accueil.js b/front/src/app/accueil/Accueil.js
index 6343d9fc..8840a6f6 100644
--- a/front/src/app/accueil/Accueil.js
+++ b/front/src/app/accueil/Accueil.js
@@ -1,16 +1,8 @@
 import React from 'react';
 //import { Link } from 'react-router-dom';
-import axios from 'axios';
-
-function callServer() {
-  axios.get('http://localhost:8000/test').then((response) => {
-    console.log(response.data);
-  });
-}
 
 export default () => (
   <div>
   Accueil
-  {callServer()}
   </div>
 );
diff --git a/front/src/app/classementEquipe/ClassementEquipe.js b/front/src/app/classementEquipe/ClassementEquipe.js
index 5bb99d3f..fdbd5bdb 100644
--- a/front/src/app/classementEquipe/ClassementEquipe.js
+++ b/front/src/app/classementEquipe/ClassementEquipe.js
@@ -1,6 +1,10 @@
 import React from 'react';
 //import { Link } from 'react-router-dom';
+import { TableauClassementEquipes } from './TableauClassementEquipes';
 
 export default () => (
-  <div>Classement par équipe</div>
+  <div>
+  <h1>Classement par équipe</h1>
+  <TableauClassementEquipes/>
+  </div>
 );
diff --git a/front/src/app/classementEquipe/TableauClassementEquipes.js b/front/src/app/classementEquipe/TableauClassementEquipes.js
new file mode 100644
index 00000000..ca8f6a49
--- /dev/null
+++ b/front/src/app/classementEquipe/TableauClassementEquipes.js
@@ -0,0 +1,30 @@
+import React, { useState } from 'react';
+import axios from 'axios';
+
+
+export function TableauClassementEquipes(){
+  var [equipes,setEquipes] = useState([]);
+  axios.get('http://localhost:8000/classement_par_equipes').then((response) => setEquipes(response.data))
+  return(
+    <table class="table">
+      <thead class="thead-light">
+        <tr>
+          <th scope="col">Equipe</th>
+          <th scope="col">Score total</th>
+          <th scope="col">Nombre de participants</th>
+          <th scope="col">Nombre de scores saisis</th>
+        </tr>
+      </thead>
+      <tbody>
+        {equipes.map((item) =>
+          <tr>
+            <th scope="row">{item.name}</th>
+            <td>{item.score}</td>
+            <td>{item.nbParticipant}</td>
+            <td>{item.nbScores}</td>
+          </tr>
+        )}
+      </tbody>
+    </table>
+  )
+};
diff --git a/front/src/app/classementIndividuel/ClassementIndividuel.js b/front/src/app/classementIndividuel/ClassementIndividuel.js
index 8b8fc682..a8f56557 100644
--- a/front/src/app/classementIndividuel/ClassementIndividuel.js
+++ b/front/src/app/classementIndividuel/ClassementIndividuel.js
@@ -1,6 +1,10 @@
 import React from 'react';
 //import { Link } from 'react-router-dom';
+import { TableauClassementIndividuel } from './TableauClassementIndividuel';
 
 export default () => (
-  <div>Classement individuel</div>
+  <div>
+  <h1>Classement individuel</h1>
+  <TableauClassementIndividuel/>
+  </div>
 );
diff --git a/front/src/app/classementIndividuel/TableauClassementIndividuel.js b/front/src/app/classementIndividuel/TableauClassementIndividuel.js
new file mode 100644
index 00000000..14f7898e
--- /dev/null
+++ b/front/src/app/classementIndividuel/TableauClassementIndividuel.js
@@ -0,0 +1,30 @@
+import React, { useState } from 'react';
+import axios from 'axios';
+
+
+export function TableauClassementIndividuel(){
+  var [equipes,setEquipes] = useState([]);
+  axios.get('http://localhost:8000/classement_individuel').then((response) => setEquipes(response.data))
+  return(
+    <table class="table">
+      <thead class="thead-light">
+        <tr>
+          <th scope="col">Equipe</th>
+          <th scope="col">Score total</th>
+          <th scope="col">Nombre équipes</th>
+          <th scope="col">Nombre de scores saisis</th>
+        </tr>
+      </thead>
+      <tbody>
+        {equipes.map((item) =>
+          <tr>
+            <th scope="row">{item.name}</th>
+            <td>{item.score}</td>
+            <td>{item.nbEquipes}</td>
+            <td>{item.nbScores}</td>
+          </tr>
+        )}
+      </tbody>
+    </table>
+  )
+};
diff --git a/front/src/index.js b/front/src/index.js
index e29815ee..d7e3bbfd 100644
--- a/front/src/index.js
+++ b/front/src/index.js
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
 import ReactDOM from 'react-dom';
 import { BrowserRouter as Router, Route } from 'react-router-dom';
 import Navbar from './app/navbar/Navbar';
-- 
GitLab