Ajout de la fonction pour supprimer une demande

This commit is contained in:
Mathis 2025-04-13 22:04:49 +02:00
parent 462fc28f2c
commit 83c9212394
5 changed files with 98 additions and 30 deletions

View File

@ -75,6 +75,7 @@ public class MainVerticle extends AbstractVerticle {
router.post("/deleteCategories").handler(setObjects::deleteCategories);
router.post("/requestDeleteObject").handler(RequestDeleteObject::deleteObject);
router.get("/getDemandeSuppression").handler(DeleteObject::getAllDeletionRequests);
router.post("/reject").handler(RequestDeleteObject::rejectDemande);
// Routes d'authentification
router.post("/signup").handler(authHandler::handleSignup);
router.post("/login").handler(authHandler::handleLogin);

View File

@ -15,16 +15,17 @@ public class QueryDeleteObject {
JsonObject body = context.body().asJsonObject();
if (body == null) {
context.response().setStatusCode(400).end(new JsonObject().put("error", "Requête invalide").encode());
context.response().setStatusCode(400)
.end(new JsonObject().put("error", "Requête invalide").encode());
return;
}
Integer objectId = body.getInteger("object_id");
Integer userId = body.getInteger("requested_by");
if (objectId == null || userId == null) {
context.response().setStatusCode(400).end(new JsonObject().put("error", "Champs manquants").encode());
context.response().setStatusCode(400)
.end(new JsonObject().put("error", "Champs manquants").encode());
return;
}
@ -39,11 +40,27 @@ public class QueryDeleteObject {
}
if (res.result().rowCount() == 0) {
context.response().setStatusCode(404).end(new JsonObject().put("error", "Objet non trouvé").encode());
context.response().setStatusCode(404)
.end(new JsonObject().put("error", "Objet non trouvé").encode());
return;
}
String checkDuplicate = "SELECT 1 FROM deletion_requests WHERE object_id = ? AND requested_by = ?";
databaseService.pool.preparedQuery(checkDuplicate).execute(Tuple.of(objectId, userId), duplicateCheck -> {
if (duplicateCheck.failed()) {
duplicateCheck.cause().printStackTrace();
context.response().setStatusCode(500)
.end(new JsonObject().put("error", "Erreur vérification duplication").encode());
return;
}
if (duplicateCheck.result().rowCount() > 0) {
context.response().setStatusCode(409)
.end(new JsonObject().put("error", "Demande déjà existante").encode());
return;
}
String insertQuery = "INSERT INTO deletion_requests (object_id, requested_by) VALUES (?, ?)";
databaseService.pool.preparedQuery(insertQuery).execute(Tuple.of(objectId, userId), insertRes -> {
@ -57,9 +74,10 @@ public class QueryDeleteObject {
}
});
});
});
}
public void getAllDeletionRequests(RoutingContext context) {
String query = "SELECT * FROM deletion_requests";
@ -89,4 +107,38 @@ public class QueryDeleteObject {
});
}
public void rejectDemande(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;
}
Integer id = body.getInteger("id");
databaseService.pool
.preparedQuery("DELETE FROM deletion_requests WHERE id=?")
.execute(Tuple.of(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", "Demande non trouvé").encode());
return;
}
context.response()
.putHeader("content-type", "application/json: charset=UTF-8")
.end(new JsonObject().put("success", "La demande à bien été supprimé").encode());
return;
});
}
}

View File

@ -117,18 +117,36 @@ function AdminObjet() {
setVerif(true);
}
};
const handleReject =(id) => {
axios
.post(`${API_BASE_URL}/reject`, {
id,
})
.then((response) => {
setMessRequete("La demande à bien été supprimé !");
console.log("La demande à été supprimée :", response.data);
window.location.reload();
})
.catch((error) => {
setMessRequete(
"Il y a eu une erreur dans la suppression de la demande !"
);
console.error("Erreur lors de la suppression de la demande :", error);
});
}
const handleDeleteObject = (id) => {
axios
.post(`${API_BASE_URL}/deleteObject`, {
id,
})
.then((response) => {
setMessRequete("Votre objet à bien été supprimé !");
alert("Votre objet à bien été supprimé !");
console.log("Votre objet à été supprimé :", response.data);
window.location.reload();
})
.catch((error) => {
setMessRequete(
alert(
"Il y a eu une erreur dans la suppression de votre objet !"
);
console.error("Erreur lors de la suppression de l'objet :", error);

View File

@ -66,9 +66,6 @@ function Dashboard() {
setAdminObjects(response.data);
});
axios.get(`${API_BASE_URL}/demandeSuppression`).then((response) => {
setRequestDeleteObject(response.data);
});
}, []);
const [adminObjects, setAdminObjects] = useState([]);

View File

@ -82,7 +82,7 @@ function EnhancedWeatherHome() {
};
const formatHeure = (h) => {
const heureFormatee = (h % 24).toString().padStart(2, "0"); // 0 00, 3 03, etc.
const heureFormatee = (h % 24).toString().padStart(2, "0");
return `${heureFormatee}:00`;
};
const hourlyForecast = [