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;
+ }
+}
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",