From fac322c457df1d744f55a932e79fe74b90cfb73a Mon Sep 17 00:00:00 2001 From: Mathis Date: Fri, 11 Apr 2025 12:26:46 +0200 Subject: [PATCH] Ajout des points par actions --- .../java/com/example/starter/AuthHandler.java | 6 ++-- .../com/example/starter/MainVerticle.java | 3 ++ .../com/example/starter/QueryObjects.java | 30 +++++++++++++------ .../java/com/example/starter/QueryUsers.java | 6 ++-- .../java/com/example/starter/SetObjects.java | 17 +++++++++-- .../java/com/example/starter/SetUser.java | 17 +++++++++-- .../com/example/starter/SetWeatherData.java | 12 ++++++-- Front-end/src/components/Header.jsx | 1 + Front-end/src/pages/Admin/User.jsx | 6 ++-- 9 files changed, 73 insertions(+), 25 deletions(-) diff --git a/Back-end/src/main/java/com/example/starter/AuthHandler.java b/Back-end/src/main/java/com/example/starter/AuthHandler.java index cb0d0cd..e3a31c3 100644 --- a/Back-end/src/main/java/com/example/starter/AuthHandler.java +++ b/Back-end/src/main/java/com/example/starter/AuthHandler.java @@ -94,11 +94,11 @@ public class AuthHandler { if (verification.verified) { JsonObject claims = new JsonObject().put("sub", email); - if(nbPointsUser<=30){ + if(nbPointsUser<=60){ claims.put("role", "user"); - }else if(nbPointsUser<=60){ + }else if(nbPointsUser<=100){ claims.put("role", "complexe"); - }else if(nbPointsUser>=100){ + }else if(nbPointsUser>=200){ claims.put("role", "admin"); } diff --git a/Back-end/src/main/java/com/example/starter/MainVerticle.java b/Back-end/src/main/java/com/example/starter/MainVerticle.java index 8492e6e..b669774 100644 --- a/Back-end/src/main/java/com/example/starter/MainVerticle.java +++ b/Back-end/src/main/java/com/example/starter/MainVerticle.java @@ -41,6 +41,9 @@ public class MainVerticle extends AbstractVerticle { AuthHandler authHandler = new AuthHandler(databaseService, jwtAuth); QueryUsers queryUsers = new QueryUsers(databaseService); SetUser setUser = new SetUser(databaseService); + setObjects.setUserHandler(setUser); + queryObjects.setUserHandler(setUser); + // Déclaration des routes router.get("/objets").handler(queryObjects::getObjects); diff --git a/Back-end/src/main/java/com/example/starter/QueryObjects.java b/Back-end/src/main/java/com/example/starter/QueryObjects.java index 8d90bf0..029a497 100644 --- a/Back-end/src/main/java/com/example/starter/QueryObjects.java +++ b/Back-end/src/main/java/com/example/starter/QueryObjects.java @@ -10,14 +10,20 @@ import java.time.format.DateTimeFormatter; import io.vertx.ext.web.RoutingContext; - public class QueryObjects { - private DatabaseService databaseService; - public QueryObjects(DatabaseService dtbS){ - this.databaseService = dtbS; - } + private DatabaseService databaseService; - public void getObjects(RoutingContext context) { + public QueryObjects(DatabaseService dtbS) { + this.databaseService = dtbS; + } + + private SetUser setUser; + + public void setUserHandler(SetUser setUser) { + this.setUser = setUser; + } + + public void getObjects(RoutingContext context) { databaseService.pool .query("SELECT * FROM weather_objects;") .execute() @@ -36,6 +42,8 @@ public class QueryObjects { public void getParticularObject(RoutingContext context) { String id = context.request().getParam("id"); + // Integer idUser = body.getInteger("idUser"); + Integer idUser = 4; if (id == null) { context.response() .setStatusCode(400) @@ -58,6 +66,10 @@ public class QueryObjects { .end(new JsonObject().put("error", "Objet non trouvé").encode()); return; } + if (idUser != null) { + setUser.updateUserPoints(idUser, 1); + } + ; context.response() .putHeader("content-type", "application/json: charset=UTF-8") .end(getInfosObjects(rows).encode()); @@ -77,9 +89,9 @@ public class QueryObjects { .put("location", row.getString("location")) .put("last_update", row.getLocalDateTime("last_update").format(formatter)) .put("status", row.getString("status")) - .put("batterie",row.getInteger("batterie")) - .put("type_batterie",row.getString("type_batterie")) - .put("proprio",row.getString("proprio")); + .put("batterie", row.getInteger("batterie")) + .put("type_batterie", row.getString("type_batterie")) + .put("proprio", row.getString("proprio")); objects.add(object); } return objects; diff --git a/Back-end/src/main/java/com/example/starter/QueryUsers.java b/Back-end/src/main/java/com/example/starter/QueryUsers.java index a3cca49..e065c02 100644 --- a/Back-end/src/main/java/com/example/starter/QueryUsers.java +++ b/Back-end/src/main/java/com/example/starter/QueryUsers.java @@ -33,11 +33,11 @@ public class QueryUsers { .put("email", row.getString("email")) .put("gender", row.getString("gender")) .put("points",points); - if(points<=30){ + if(points<=60){ user.put("role", "user"); - }else if(points<=60){ + }else if(points<=100){ user.put("role", "complexe"); - }else if(points>=100){ + }else if(points>=200){ user.put("role", "admin"); } users.add(user); diff --git a/Back-end/src/main/java/com/example/starter/SetObjects.java b/Back-end/src/main/java/com/example/starter/SetObjects.java index e3a6de6..a1bb0e6 100644 --- a/Back-end/src/main/java/com/example/starter/SetObjects.java +++ b/Back-end/src/main/java/com/example/starter/SetObjects.java @@ -6,11 +6,13 @@ import io.vertx.sqlclient.Tuple; public class SetObjects { private DatabaseService databaseService; - + private SetUser setUser; public SetObjects(DatabaseService ddbs) { this.databaseService = ddbs; } - + public void setUserHandler(SetUser setUser){ + this.setUser = setUser; + } public void setInfoObjet(RoutingContext context) { JsonObject body = context.body().asJsonObject(); if (body == null) { @@ -20,6 +22,8 @@ public class SetObjects { return; } Integer id = body.getInteger("id"); + // Integer idUser = body.getInteger("idUser"); + Integer idUser = 4; String description = body.getString("description"); String type = body.getString("type"); String location = body.getString("location"); @@ -42,6 +46,9 @@ public class SetObjects { .end(new JsonObject().put("error", "Objet non trouvé").encode()); return; } + if(idUser!=null){ + setUser.updateUserPoints(idUser,1); + }; context.response() .putHeader("content-type", "application/json: charset=UTF-8") .end(new JsonObject().put("success", "L'objet à bien été mis à jour").encode()); @@ -88,6 +95,8 @@ public class SetObjects { .end(new JsonObject().put("error","Corps de la requête manquant").encode()); return; } + // Integer idUser = body.getInteger("idUser"); + Integer idUser = 4; String name = body.getString("nom"); String description = body.getString("description"); String type = body.getString("type"); @@ -111,12 +120,14 @@ public class SetObjects { .end(new JsonObject().put("error", "Objet non trouvé").encode()); return; } + if(idUser!=null){ + setUser.updateUserPoints(idUser,2); + }; context.response() .putHeader("content-type","application/json: charset=UTF-8") .end(new JsonObject().put("success", "L'objet à bien été ajouté").encode()); return; }); - } } diff --git a/Back-end/src/main/java/com/example/starter/SetUser.java b/Back-end/src/main/java/com/example/starter/SetUser.java index b2ade2a..6bcd9b2 100644 --- a/Back-end/src/main/java/com/example/starter/SetUser.java +++ b/Back-end/src/main/java/com/example/starter/SetUser.java @@ -10,7 +10,21 @@ public class SetUser { public SetUser(DatabaseService ddbs) { this.databaseService = ddbs; } - + public void updateUserPoints(Integer userId, Integer points) { + databaseService.pool + .preparedQuery("UPDATE users SET points=points+? WHERE id=?") + .execute(Tuple.of(points, userId)) + .onFailure(e -> { + System.err.println("Erreur de mise à jour des points :" + e.getMessage()); + }) + .onSuccess(rows -> { + if (rows.rowCount() > 0) { + System.out.println("Points de l'utilisateur mis à jour avec succès"); + } else { + System.out.println("Utilisateur non trouvé pour la mise à jour des points"); + } + }); + } public void setUserPoints(RoutingContext context) { JsonObject body = context.body().asJsonObject(); if (body == null) { @@ -21,7 +35,6 @@ public class SetUser { } Integer id = body.getInteger("id"); Integer points = body.getInteger("points"); - databaseService.pool .preparedQuery( "UPDATE users SET points=? WHERE id=?") diff --git a/Back-end/src/main/java/com/example/starter/SetWeatherData.java b/Back-end/src/main/java/com/example/starter/SetWeatherData.java index 4c2fb56..d6ca45f 100644 --- a/Back-end/src/main/java/com/example/starter/SetWeatherData.java +++ b/Back-end/src/main/java/com/example/starter/SetWeatherData.java @@ -6,11 +6,15 @@ import io.vertx.sqlclient.Tuple; public class SetWeatherData { private DatabaseService databaseService; + private SetUser setUser; + public SetWeatherData(DatabaseService ddbs) { this.databaseService = ddbs; } - + public void setUserHandler(SetUser setUser) { + this.setUser = setUser; + } public void setRangeData(RoutingContext context) { JsonObject body = context.body().asJsonObject(); if (body == null) { @@ -37,7 +41,8 @@ public class SetWeatherData { return; } String query = String.format("UPDATE range_data SET %s_min=?, %s_max=? WHERE station_id=?", type, type); - + // Integer idUser = body.getInteger("idUser"); + Integer idUser = 4; databaseService.pool .preparedQuery( query) @@ -55,6 +60,9 @@ public class SetWeatherData { .end(new JsonObject().put("error", "Objet non trouvé").encode()); return; } + if (idUser != null) { + setUser.updateUserPoints(idUser, 1); + } context.response() .putHeader("content-type", "application/json: charset=UTF-8") .end(new JsonObject().put("success", "Les limites ont bien été mis à jour").encode()); diff --git a/Front-end/src/components/Header.jsx b/Front-end/src/components/Header.jsx index 18fef1f..52dada0 100644 --- a/Front-end/src/components/Header.jsx +++ b/Front-end/src/components/Header.jsx @@ -85,6 +85,7 @@ function Header() { className="flex items-center gap-2 text-gray-600 hover:text-indigo-600" > + Paramètres diff --git a/Front-end/src/pages/Admin/User.jsx b/Front-end/src/pages/Admin/User.jsx index 9244805..7ea7585 100644 --- a/Front-end/src/pages/Admin/User.jsx +++ b/Front-end/src/pages/Admin/User.jsx @@ -63,11 +63,11 @@ function User() { user.role = newLevel; /*ToDO*/ if (user.role === "user") { - user.points = 0; - } else if (user.role === "complexe") { user.points = 60; - } else if (user.role === "admin") { + } else if (user.role === "complexe") { user.points = 100; + } else if (user.role === "admin") { + user.points = 200; } axios .post(`${API_BASE_URL}/setUserPoints`, {