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 629aded..331d1c6 100644 --- a/Back-end/src/main/java/com/example/starter/MainVerticle.java +++ b/Back-end/src/main/java/com/example/starter/MainVerticle.java @@ -52,7 +52,8 @@ public class MainVerticle extends AbstractVerticle { router.post("/addObject").handler(setObjects::newObject); router.get("/getRange").handler(queryWeather::getRangeData); router.post("/modifRangeData").handler(setWeatherData::setRangeData); - + router.post("/deleteObject").handler(setObjects::deleteObject); + // Routes d'authentification router.post("/signup").handler(authHandler::handleSignup); router.post("/login").handler(authHandler::handleLogin); 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 fe186fc..8d90bf0 100644 --- a/Back-end/src/main/java/com/example/starter/QueryObjects.java +++ b/Back-end/src/main/java/com/example/starter/QueryObjects.java @@ -78,7 +78,8 @@ public class QueryObjects { .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("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/SetObjects.java b/Back-end/src/main/java/com/example/starter/SetObjects.java index dd35436..e3a6de6 100644 --- a/Back-end/src/main/java/com/example/starter/SetObjects.java +++ b/Back-end/src/main/java/com/example/starter/SetObjects.java @@ -48,7 +48,38 @@ public class SetObjects { return; }); } + public void deleteObject(RoutingContext context){ + JsonObject body = context.body().asJsonObject(); + if(body== null){ + context.response() + .setStatusCode(400) + .end(new JsonObject().put("error","Corps de la requête manquant").encode()); + return; + } + String id = body.getString("id"); + databaseService.pool + .preparedQuery("DELETE FROM weather_objects WHERE id=?") + .execute(Tuple.of(Integer.parseInt(id))) + .onFailure(e->{ + System.err.println("Erreur de récupération de la BDD :"+e.getMessage()); + context.response() + .setStatusCode(500) + .end(new JsonObject().put("error","Erreur de récupération de la BDD").encode()); + }) + .onSuccess(rows -> { + if(rows.rowCount()==0){ + context.response() + .setStatusCode(404) + .end(new JsonObject().put("error", "Objet non trouvé").encode()); + return; + } + context.response() + .putHeader("content-type","application/json: charset=UTF-8") + .end(new JsonObject().put("success", "L'objet à bien été supprimé").encode()); + return; + }); + } public void newObject(RoutingContext context){ JsonObject body = context.body().asJsonObject(); if(body== null){ @@ -62,9 +93,11 @@ public class SetObjects { String type = body.getString("type"); String location = body.getString("location"); String status = body.getString("status"); + String batterieType = body.getString("batterieType"); + String proprio = body.getString("proprio"); databaseService.pool - .preparedQuery("INSERT INTO weather_objects (name,description,type,location,status) VALUES (?,?,?,?,?)") - .execute(Tuple.of(name,description,type,location,status)) + .preparedQuery("INSERT INTO weather_objects (name,description,type,location,status,type_batterie,proprio) VALUES (?,?,?,?,?,?,?)") + .execute(Tuple.of(name,description,type,location,status,batterieType,proprio)) .onFailure(e->{ System.err.println("Erreur de récupération de la BDD :"+e.getMessage()); context.response() diff --git a/Front-end/src/App.jsx b/Front-end/src/App.jsx index 3059717..5b1d6c8 100644 --- a/Front-end/src/App.jsx +++ b/Front-end/src/App.jsx @@ -18,8 +18,6 @@ import AdminObjet from "./pages/Admin/AdminObjet.jsx"; function App() { return ( - {" "} - {/* Enveloppe l'application avec AuthProvider */}
diff --git a/Front-end/src/components/FormNewObject.jsx b/Front-end/src/components/FormNewObject.jsx new file mode 100644 index 0000000..662f5e4 --- /dev/null +++ b/Front-end/src/components/FormNewObject.jsx @@ -0,0 +1,257 @@ +import React, { useState } from "react"; +import { BadgePlus } from "lucide-react"; +import axios from "axios"; +import { API_BASE_URL } from "../config"; + +function FormNewObject({ isAdmin }) { + const [description, setDescription] = useState(""); + const [type, setType] = useState(""); + const [location, setLocalisation] = useState(""); + const [proprio,setProprio] = useState(""); + const [batterieType,setBatterieType] = useState(""); + /*TODO*/ + /*Definir proprio avec le nom de l'user qui ajoute*/ + const [status, setStatus] = useState("active"); + const [nom, setNom] = useState(""); + const [Response, setResponse] = useState(null); + const [isActive, setActive] = useState(true); + const [verif, setVerif] = useState(false); + const [enregistre, setEnregistre] = useState(false); + const [messRequete, setMessRequete] = useState(""); + function handleSubmit(event) { + event.preventDefault(); + + if (verif) { + console.log("Envoi requete"); + axios + .post(`${API_BASE_URL}/addObject`, { + nom, + description, + type, + location, + status, + batterieType, + proprio + }) + .then((response) => { + setMessRequete("Votre objet à bien été enregistré !"); + setEnregistre(true); + console.log("Ajout de l'objet réussit :", response.data); + }) + .catch((error) => { + setMessRequete("Il y a eu une erreur dans l'ajout de votre objet !"); + console.error("Erreur lors de l'ajout de l'objet :", error); + }); + setVerif(false); + resetForm(); + } else { + setVerif(true); + } + } + function resetForm() { + setNom(""); + setStatus("active"); + setDescription(""); + setType(""); + setLocalisation(""); + setBatterieType(""); + if(isAdmin)setProprio(""); + setActive(true); + } + function handleCancel() { + if (verif) { + setVerif(false); + } else { + resetForm(); + } + } + function handleStatusChange() { + setActive((prevIsActive) => { + const newIsActive = !prevIsActive; + setStatus(newIsActive ? "active" : "inactive"); + return newIsActive; + }); + } + + return ( +
+
+ {isAdmin ? ( +

+ Ajouter un nouvel objet +

+ ) : ( + <> +
+ +
+

+ {!verif + ? "Entrez les données de votre nouvel objet" + : "Êtes-vous sûr de ces données ?"} +

+ + )} +
+
+ + setNom(e.target.value)} + required + disabled={verif} + /> +
+
+ + setDescription(e.target.value)} + required + disabled={verif} + /> +
+ +
+ + setType(e.target.value)} + required + disabled={verif} + /> +
+ +
+ + setLocalisation(e.target.value)} + required + disabled={verif} + /> +
+
+ + setBatterieType(e.target.value)} + required + disabled={verif} + /> +
+
+ + setProprio(e.target.value)} + required + disabled={verif||!isAdmin} + /> +
+ +
+ +
+ +
+ + +
+ +
+
+ +
+ + +
+

+ {messRequete} +

+
+ ); +} + +export default FormNewObject; diff --git a/Front-end/src/components/Header.jsx b/Front-end/src/components/Header.jsx index d8d4c53..78ea610 100644 --- a/Front-end/src/components/Header.jsx +++ b/Front-end/src/components/Header.jsx @@ -8,8 +8,8 @@ function Header() { const [isMenuOpen, setIsMenuOpen] = useState(false); return ( -
-
+
+
VigiMétéo - -
-

- {messRequete} -

- - + {/*Formulaire d'ajout d'objet*/} + {/* Tri des objets */} -
+

Liste des Objets et Outils/Services @@ -322,7 +159,7 @@ function AdminObjet() { > - + @@ -356,7 +193,7 @@ function AdminObjet() { {sortedObjects.map((obj) => ( - {obj.nom} + {obj.name} {obj.description} @@ -365,10 +202,10 @@ function AdminObjet() { {obj.type} - {obj.localisation} + {obj.location} - {obj.proprietaire} + {obj.proprio} {obj.status} diff --git a/Front-end/src/pages/Admin/sidebar.jsx b/Front-end/src/pages/Admin/sidebar.jsx index dd5b1bf..dbaf762 100644 --- a/Front-end/src/pages/Admin/sidebar.jsx +++ b/Front-end/src/pages/Admin/sidebar.jsx @@ -11,12 +11,12 @@ function Sidebar() { className="text-white no-underline hover:underline" href="/dashboard" > - Dashboard + Tableau de bord
  • - Users + Utilisateurs
  • @@ -24,17 +24,17 @@ function Sidebar() { className="text-white no-underline hover:underline" href="/adminobjet" > - AdminObjet + Gestion des objets
  • - Settings + Paramètres
  • - Reports + Rapports
  • diff --git a/Front-end/src/pages/Gestion/AddObject.jsx b/Front-end/src/pages/Gestion/AddObject.jsx index 8881166..b9615f9 100644 --- a/Front-end/src/pages/Gestion/AddObject.jsx +++ b/Front-end/src/pages/Gestion/AddObject.jsx @@ -1,71 +1,7 @@ import React, { useState } from "react"; -import { BadgePlus } from "lucide-react"; -import axios from "axios"; -import { API_BASE_URL } from "../../config"; +import FormNewObject from "../../components/FormNewObject"; function AddObject() { - const [description, setDescription] = useState(""); - const [type, setType] = useState(""); - const [location, setLocalisation] = useState(""); - const [status, setStatus] = useState("active"); - const [nom, setNom] = useState(""); - const [Response, setResponse] = useState(null); - const [isActive, setActive] = useState(true); - const [verif, setVerif] = useState(false); - const [enregistre, setEnregistre] = useState(false); - const [messRequete, setMessRequete] = useState(""); - function handleSubmit(event) { - event.preventDefault(); - - if (verif) { - console.log("Envoi requete"); - axios - .post(`${API_BASE_URL}/addObject`, { - nom, - description, - type, - location, - status, - }) - .then((response) => { - setMessRequete("Votre objet à bien été enregistré !"); - setEnregistre(true); - console.log("Ajout de l'objet réussit :", response.data); - }) - .catch((error) => { - setMessRequete("Il y a eu une erreur dans l'ajout de votre objet !"); - console.error("Erreur lors de l'ajout de l'objet :", error); - }); - setVerif(false); - resetForm(); - } else { - setVerif(true); - } - } - function resetForm() { - setNom(""); - setStatus(""); - setDescription(""); - setType(""); - setLocalisation(""); - setActive(true); - } - function handleCancel() { - if (verif) { - setVerif(false); - } else { - resetForm(); - } - } - - function handleStatusChange() { - setActive((prevIsActive) => { - const newIsActive = !prevIsActive; - setStatus(newIsActive ? "active" : "inactive"); - return newIsActive; - }); - } - return (
    @@ -74,144 +10,7 @@ function AddObject() { Nouvel objet

    -
    -
    -
    - -
    -

    - {!verif - ? "Entrez les données de votre nouvel objet" - : "Êtes-vous sûr de ces données ?"} -

    -
    -
    - - setNom(e.target.value)} - required - disabled={verif} - /> -
    -
    - - setDescription(e.target.value)} - required - disabled={verif} - /> -
    - -
    - - setType(e.target.value)} - required - disabled={verif} - /> -
    - -
    - - setLocalisation(e.target.value)} - required - disabled={verif} - /> -
    - -
    - -
    - -
    - - -
    - -
    -
    - -
    - - -
    -

    - {messRequete} -

    -
    +
    );