diff --git a/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx b/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx index 9b31a73..607dbd6 100644 --- a/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx +++ b/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx @@ -5,11 +5,16 @@ interface Promotion { name: string; } +interface Student { + id: string; + firstName: string; + lastName: string; + promotionId: number; +} + interface Mobility { id: number; studentId: string; - firstName: string; - lastName: string; startDate: string | null; endDate: string | null; weeksCount: number | null; @@ -19,7 +24,7 @@ interface Mobility { } export default function ConsultMobility() { - const [data, setData] = useState<{ promotions?: Promotion[]; mobilities: Mobility[] } | null>(null); + const [data, setData] = useState<{ promotions?: Promotion[]; students?: Student[]; mobilities?: Mobility[] } | null>(null); const [error, setError] = useState(null); useEffect(() => { @@ -74,21 +79,24 @@ export default function ConsultMobility() { - {data.mobilities - .filter((mobility) => mobility.studentId.startsWith(String(promo.id))) - .map((mobility) => ( - - {mobility.id} - {mobility.firstName} - {mobility.lastName} - {mobility.startDate || "N/A"} - {mobility.endDate || "N/A"} - {mobility.weeksCount ?? "N/A"} - {mobility.destinationCountry || "N/A"} - {mobility.destinationName || "N/A"} - {mobility.mobilityStatus} - - ))} + {data.students + ?.filter((student) => student.promotionId === promo.id) + .map((student) => { + const mobility = data.mobilities?.find((mob) => mob.studentId === student.id); + return ( + + {student.id} + {student.firstName} + {student.lastName} + {mobility?.startDate || "N/A"} + {mobility?.endDate || "N/A"} + {mobility?.weeksCount ?? "N/A"} + {mobility?.destinationCountry || "N/A"} + {mobility?.destinationName || "N/A"} + {mobility?.mobilityStatus || "N/A"} + + ); + })} diff --git a/routes/(apps)/mobility/api/insert_mobility.ts b/routes/(apps)/mobility/api/insert_mobility.ts index 9a1e985..365e79b 100644 --- a/routes/(apps)/mobility/api/insert_mobility.ts +++ b/routes/(apps)/mobility/api/insert_mobility.ts @@ -9,24 +9,30 @@ export const handler: Handlers = { connection.run("ATTACH DATABASE 'databases/data/students.db' AS students"); console.log("Connected to databases."); - // Récupération des mobilités + const students = connection.prepare( + `SELECT + students.userId AS id, + students.firstName, + students.lastName, + students.promotionId AS promotionId, + promotions.name AS promotionName + FROM students.students + LEFT JOIN students.promotions ON students.promotionId = promotions.id` + ).all(); + const mobilities = connection.prepare( `SELECT mobility.id, mobility.studentId, - students.firstName, - students.lastName, mobility.startDate, mobility.endDate, mobility.weeksCount, mobility.destinationCountry, mobility.destinationName, mobility.mobilityStatus - FROM mobility - LEFT JOIN students.students ON mobility.studentId = students.userId` + FROM mobility` ).all(); - // Récupération des promotions const promotions = connection.prepare( `SELECT id, name FROM students.promotions` ).all(); @@ -34,7 +40,7 @@ export const handler: Handlers = { connection.close(); return new Response( - JSON.stringify({ mobilities, promotions }), + JSON.stringify({ mobilities, students, promotions }), { status: 200, headers: { "Content-Type": "application/json" },