fix: api integration

This commit is contained in:
Mohamed Maoulainine Maoulainine
2025-05-02 01:26:08 +02:00
parent 49e52e1826
commit c3ad092512
7 changed files with 374 additions and 130 deletions

View File

@ -1,6 +1,7 @@
<template>
<Header />
<error-wrapper></error-wrapper>
<error-wrapper />
<div id="container">
<div id="main">
<h3>Projet en cours</h3>
@ -13,18 +14,16 @@
:project-id="0"
/>
<div id="main">
<h3>Projet en attente</h3>
<PendingProjectComponent
v-for="(project, index) in pendingProjects"
:key="index"
:project-name="project.name"
:creation-date="project.creationDate"
/>
</div>
<h3>Projet en attente</h3>
<PendingProjectComponent
v-for="(project, index) in pendingProjects"
:key="index"
:project-name="project.projectName"
:creation-date="project.creationDate"
/>
<AddProjectForm />
<PendingRequestsManager />
</div>
<Agenda :project-r-d-v="rendezVous" />
@ -33,16 +32,17 @@
<script setup lang="ts">
import { ref, onMounted } from "vue";
import { getAdminProjects, getPendingProjects } from "@/services/Apis/Admin";
import { getProjectEntrepreneurs } from "@/services/Apis/Shared";
import { type AxiosError, type AxiosResponse } from "axios";
import Header from "../components/HeaderComponent.vue";
//import Agenda from "../components/AdminAppointments.vue";
import Agenda from "../components/AgendaComponent.vue";
import ProjectComp from "../components/ProjectComponent.vue";
import PendingProjectComponent from "@/components/PendingProjectComponent.vue";
import AddProjectForm from "@/components/AddProjectForm.vue";
import { getAdminProjects } from "@/services/Apis/Admin";
import { getProjectEntrepreneurs } from "@/services/Apis/Shared";
import { type AxiosError, type AxiosResponse } from "axios";
import PendingRequestsManager from "@/components/PendingRequestsManager.vue";
import Project from "@/ApiClasses/Project";
import UserEntrepreneur from "@/ApiClasses/UserEntrepreneur";
@ -75,7 +75,7 @@ const fetchProjects = () => {
);
const projectPromises = projectList.map(
(project: { idProject: number; projectName: string }) =>
(project: Project) =>
new Promise<void>((resolve) => {
getProjectEntrepreneurs(
project.idProject!,
@ -85,7 +85,6 @@ const fetchProjects = () => {
new UserEntrepreneur(m).userName ||
"Unknown"
);
projects.value.push({
name:
project.projectName ||
@ -93,7 +92,6 @@ const fetchProjects = () => {
link: `/project/${project.idProject}`,
members,
});
resolve();
},
() => {
@ -111,7 +109,6 @@ const fetchProjects = () => {
);
Promise.all(projectPromises).catch(() => {
// fallback in case member fetches fail
projects.value = fallbackProjects;
});
},
@ -124,10 +121,39 @@ const fetchProjects = () => {
onMounted(fetchProjects);
const pendingProjects = ref([
{ name: "l'eau", creationDate: "26-02-2024" },
{ name: "l'air", creationDate: "09-03-2023" },
]);
const pendingProjects = ref<Project[]>([]);
const mockPendingProjects = [
new Project({ projectName: "l'eau", creationDate: "26-02-2024" }),
new Project({ projectName: "l'air", creationDate: "09-03-2023" }),
];
onMounted(() => {
getPendingProjects(
(response) => {
pendingProjects.value = response.data.map(
(p: Project) =>
new Project({
projectName: p.projectName,
creationDate: p.creationDate,
})
);
},
(error) => {
console.error(
"Failed to fetch pending projects, using mock:",
error
);
pendingProjects.value = mockPendingProjects.map(
(p) =>
new Project({
projectName: p.projectName,
creationDate: p.creationDate,
})
);
}
);
});
const rendezVous = ref([
{ projectName: "Projet Alpha", date: "2025-03-10", lieu: "P106" },
@ -176,7 +202,6 @@ button:hover {
background-color: #0056b3;
}
/* Add spacing between project sections */
#main > * + * {
margin-top: 2rem;
}

View File

@ -112,7 +112,7 @@ const fetchAdminData = (projectId: number, useMock = IS_MOCK_MODE) => {
"Erreur lors de la récupération des données de l'administrateur :",
error
);
admin.value = new UserAdmin({
idUser: 0,
userSurname: "Erreur",