From 4600879c6e1177814d9566c427839c6b14b8f08e Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Tue, 13 Jan 2026 23:29:54 +0100 Subject: [PATCH 1/2] Fix backend url --- src/utils/users/deleteUser.js | 2 +- src/utils/users/getUserToValidate.js | 2 +- src/utils/users/validateUser.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/users/deleteUser.js b/src/utils/users/deleteUser.js index 5c4a8d3..e6f13fd 100644 --- a/src/utils/users/deleteUser.js +++ b/src/utils/users/deleteUser.js @@ -8,7 +8,7 @@ export default async function deleteUser(userId) { const res = await fetch( - `http://${import.meta.env.VITE_API_URL}/api/users/${userId}`, + `${import.meta.env.VITE_API_URL}/api/users/${userId}`, { method: "DELETE", credentials: "include", diff --git a/src/utils/users/getUserToValidate.js b/src/utils/users/getUserToValidate.js index f619c0b..b134ec9 100644 --- a/src/utils/users/getUserToValidate.js +++ b/src/utils/users/getUserToValidate.js @@ -1,6 +1,6 @@ export default async function getUserToValidate() { try { - const res = await fetch(`http://${import.meta.env.VITE_API_URL}/api/users/invalid`, { + const res = await fetch(`${import.meta.env.VITE_API_URL}/api/users/invalid`, { method: 'GET', credentials: 'include', headers: { diff --git a/src/utils/users/validateUser.js b/src/utils/users/validateUser.js index 21f4d1e..16f2bde 100644 --- a/src/utils/users/validateUser.js +++ b/src/utils/users/validateUser.js @@ -4,7 +4,7 @@ export default async function validateUser(userId) { const csrfToken = await getXSRFToken(); try { const res = await fetch( - `http://${import.meta.env.VITE_API_URL}/api/users/${userId}/validate`, + `${import.meta.env.VITE_API_URL}/api/users/${userId}/validate`, { method: "POST", credentials: "include", From 4688cd17576632e396fce86e9cb51f4e750596e4 Mon Sep 17 00:00:00 2001 From: T'JAMPENS QUENTIN p2406187 Date: Tue, 13 Jan 2026 23:30:04 +0100 Subject: [PATCH 2/2] Create task btn --- src/pages/eventDetail/eventDetail.jsx | 104 ++++++++++++++++++- src/pages/eventDetail/eventDetail.module.css | 8 +- src/utils/tasks/createTask.js | 49 +++++++++ 3 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 src/utils/tasks/createTask.js diff --git a/src/pages/eventDetail/eventDetail.jsx b/src/pages/eventDetail/eventDetail.jsx index 7965020..0d1d5f1 100644 --- a/src/pages/eventDetail/eventDetail.jsx +++ b/src/pages/eventDetail/eventDetail.jsx @@ -9,6 +9,8 @@ import Modal from "../../components/ui/modal/modal.jsx"; import { AuthContext } from "../../contexts/auth/AuthContext.js"; import deleteEvent from "../../utils/events/deleteEvent.js"; import { useNavigate } from "react-router"; +import TextInput from "../../components/ui/input/input.jsx"; +import createTaskApi from "../../utils/tasks/createTask.js"; function EventDetail() { @@ -21,6 +23,14 @@ function EventDetail() { const [open, setOpen] = useState(false); const [event, setEvent] = useState(null); + const [openTaskModal, setOpenTaskModal] = useState(false); + const [taskName, setTaskName] = useState(""); + const [taskDescription, setTaskDescription] = useState(""); + const [taskLocation, setTaskLocation] = useState(""); + const [maxParticipants, setMaxParticipants] = useState(""); + const [startTime, setStartTime] = useState(""); + const [endTime, setEndTime] = useState(""); + useEffect(() => { (async () => { @@ -42,6 +52,31 @@ function EventDetail() { } } + const createTask = async () => { + const success = await createTaskApi({ + eventId: id, + name: taskName, + description: taskDescription, + start: startTime, + end: endTime, + location: taskLocation, + maxParticipants, + }); + + if (success) { + setOpenTaskModal(false); + setTaskName(""); + setTaskDescription(""); + setTaskLocation(""); + setMaxParticipants(""); + setStartTime(""); + setEndTime(""); + } else { + console.log("⚠️ Échec de la création de la task"); + } + }; + + return (
@@ -54,7 +89,10 @@ function EventDetail() {

{event && formatDateLetter(event.start)}

{event?.description}

- {user?.isAdmin && } + {user?.isAdmin &&
+ + +
}
@@ -74,6 +112,70 @@ function EventDetail() { + + setOpenTaskModal(false)} title={"Créer tâche"}> +
+ +
+

Nom de la tâche

+ setTaskName(e.target.value)} + placeholder="Nom de la tâche" + /> +
+ +
+

Description

+ setTaskDescription(e.target.value)} + placeholder="Description de la tâche" + /> +
+ +
+

Lieu

+ setTaskLocation(e.target.value)} + placeholder="Lieu" + /> +
+ +
+

Nombre maximum de participants

+ setMaxParticipants(e.target.value)} + placeholder="Participants max" + /> +
+ +
+

Heure de début

+ setStartTime(e.target.value)} + /> +
+ +
+

Heure de fin

+ setEndTime(e.target.value)} + /> +
+ + + +
+
+ ); } diff --git a/src/pages/eventDetail/eventDetail.module.css b/src/pages/eventDetail/eventDetail.module.css index 30fbc5a..11ca271 100644 --- a/src/pages/eventDetail/eventDetail.module.css +++ b/src/pages/eventDetail/eventDetail.module.css @@ -52,7 +52,7 @@ justify-content: space-between; } -.deleteEventBtn { +.manageBtn { height: fit-content; } @@ -61,4 +61,10 @@ flex-direction: column; align-items: center; gap: 24px; +} + +.manageEvent { + display: flex; + flex-direction: row; + gap: 10px; } \ No newline at end of file diff --git a/src/utils/tasks/createTask.js b/src/utils/tasks/createTask.js new file mode 100644 index 0000000..25da52a --- /dev/null +++ b/src/utils/tasks/createTask.js @@ -0,0 +1,49 @@ +import getXSRFToken from "../getXSRF.js"; + +export default async function createTask({ + eventId, + name, + description, + start, + end, + location, + maxParticipants, + }) { + const csrfToken = await getXSRFToken(); + + try { + const res = await fetch( + `${import.meta.env.VITE_API_URL}/api/events/task`, + { + method: "POST", + credentials: "include", + headers: { + Accept: "application/json", + "Content-Type": "application/json", + "X-XSRF-TOKEN": csrfToken, + }, + body: JSON.stringify({ + event_id: eventId, + name, + description, + start, + end, + location, + max_participants: maxParticipants, + }), + } + ); + + if (!res.ok) { + const errorData = await res.json(); + return false; + } + + const data = await res.json(); + return true; + + } catch (err) { + console.log("❌ Erreur réseau :", err); + return false; + } +}