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 e467323..fa171c3 100644 --- a/Back-end/src/main/java/com/example/starter/MainVerticle.java +++ b/Back-end/src/main/java/com/example/starter/MainVerticle.java @@ -63,6 +63,7 @@ public class MainVerticle extends AbstractVerticle { router.post("/updateProfil").handler(setUser::updateUserProfile); router.post("/changePassword").handler(setUser::changeUserPassword); router.post("/publicUser").handler(queryUsers::getPublicUser); + router.get("/getCategories").handler(queryObjects::getCategories); // 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 95a3427..abc5bca 100644 --- a/Back-end/src/main/java/com/example/starter/QueryObjects.java +++ b/Back-end/src/main/java/com/example/starter/QueryObjects.java @@ -40,6 +40,26 @@ public class QueryObjects { }); } + public void getCategories(RoutingContext context) { + databaseService.pool + .query("SELECT DISTINCT type FROM weather_objects;") + .execute() + .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 -> { + JsonArray types = new JsonArray(); + rows.forEach(row -> types.add(row.getString("type"))); + + context.response() + .putHeader("content-type", "application/json; charset=UTF-8") + .end(types.encode()); + }); + } + public void getParticularObject(RoutingContext context) { JsonObject body = context.body().asJsonObject(); if (body == null) { diff --git a/Front-end/src/components/FormNewObject.jsx b/Front-end/src/components/FormNewObject.jsx index c9913b8..8d138f1 100644 --- a/Front-end/src/components/FormNewObject.jsx +++ b/Front-end/src/components/FormNewObject.jsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { BadgePlus } from "lucide-react"; import axios from "axios"; import { API_BASE_URL } from "../config"; @@ -6,12 +6,12 @@ import { useAuth } from "../AuthContext"; function FormNewObject({ isAdmin }) { const { user } = useAuth(); - + const [categorie, setCategorie] = useState({}); const [description, setDescription] = useState(""); const [type, setType] = useState(""); const [location, setLocalisation] = useState(""); - const [proprio_id,setProprio_id] = useState(user?.id); - const [batterieType,setBatterieType] = useState(""); + const [proprio_id, setProprio_id] = useState(user?.id); + const [batterieType, setBatterieType] = useState(""); const [status, setStatus] = useState("active"); const [nom, setNom] = useState(""); const [Response, setResponse] = useState(null); @@ -32,7 +32,7 @@ function FormNewObject({ isAdmin }) { location, status, batterieType, - proprio_id + proprio_id, }) .then((response) => { setMessRequete("Votre objet à bien été enregistré !"); @@ -49,6 +49,12 @@ function FormNewObject({ isAdmin }) { setVerif(true); } } + useEffect(() => { + axios.get(`${API_BASE_URL}/getCategories`).then((response) => { + setCategorie(response.data); + console.log(response.data); + }); + }, []); function resetForm() { setNom(""); setStatus("active"); @@ -56,7 +62,7 @@ function FormNewObject({ isAdmin }) { setType(""); setLocalisation(""); setBatterieType(""); - if(isAdmin)set_id(""); + if (isAdmin) set_id(""); setActive(true); } function handleCancel() { @@ -136,15 +142,21 @@ function FormNewObject({ isAdmin }) { > Type : - setType(e.target.value)} required disabled={verif} - /> + > + + {categorie.map((cat, index) => ( + + ))} +