diff --git a/fresh.gen.ts b/fresh.gen.ts index d5e2560..1f123c6 100644 --- a/fresh.gen.ts +++ b/fresh.gen.ts @@ -3,11 +3,13 @@ // This file is automatically updated during development when running `dev.ts`. import * as $_apps_layout from "./routes/(apps)/_layout.tsx"; +import * as $_apps_mobility_api_download from "./routes/(apps)/mobility/api/download.ts"; import * as $_apps_mobility_api_insert_mobility from "./routes/(apps)/mobility/api/insert-mobility.ts"; import * as $_apps_mobility_index from "./routes/(apps)/mobility/index.tsx"; import * as $_apps_mobility_partials_admin_edit_mobility from "./routes/(apps)/mobility/partials/(admin)/edit_mobility.tsx"; import * as $_apps_mobility_partials_index from "./routes/(apps)/mobility/partials/index.tsx"; import * as $_apps_mobility_partials_overview from "./routes/(apps)/mobility/partials/overview.tsx"; +import * as $_apps_mobility_types_d from "./routes/(apps)/mobility/types.d.ts"; import * as $_apps_notes_index from "./routes/(apps)/notes/index.tsx"; import * as $_apps_notes_partials_admin_courses from "./routes/(apps)/notes/partials/(admin)/courses.tsx"; import * as $_apps_notes_partials_index from "./routes/(apps)/notes/partials/index.tsx"; @@ -30,7 +32,6 @@ import * as $_islands_AppNavigator from "./routes/(_islands)/AppNavigator.tsx"; import * as $_islands_Navbar from "./routes/(_islands)/Navbar.tsx"; import * as $_apps_mobility_islands_ConsultMobility from "./routes/(apps)/mobility/(_islands)/ConsultMobility.tsx"; import * as $_apps_mobility_islands_EditMobility from "./routes/(apps)/mobility/(_islands)/EditMobility.tsx"; -import * as $_apps_mobility_islands_ImportFile from "./routes/(apps)/mobility/(_islands)/ImportFile.tsx"; import * as $_apps_students_islands_ConsultStudents from "./routes/(apps)/students/(_islands)/ConsultStudents.tsx"; import * as $_apps_students_islands_EditStudents from "./routes/(apps)/students/(_islands)/EditStudents.tsx"; import * as $_apps_students_islands_UploadStudents from "./routes/(apps)/students/(_islands)/UploadStudents.tsx"; @@ -39,6 +40,7 @@ import type { Manifest } from "$fresh/server.ts"; const manifest = { routes: { "./routes/(apps)/_layout.tsx": $_apps_layout, + "./routes/(apps)/mobility/api/download.ts": $_apps_mobility_api_download, "./routes/(apps)/mobility/api/insert-mobility.ts": $_apps_mobility_api_insert_mobility, "./routes/(apps)/mobility/index.tsx": $_apps_mobility_index, @@ -48,6 +50,7 @@ const manifest = { $_apps_mobility_partials_index, "./routes/(apps)/mobility/partials/overview.tsx": $_apps_mobility_partials_overview, + "./routes/(apps)/mobility/types.d.ts": $_apps_mobility_types_d, "./routes/(apps)/notes/index.tsx": $_apps_notes_index, "./routes/(apps)/notes/partials/(admin)/courses.tsx": $_apps_notes_partials_admin_courses, @@ -80,8 +83,6 @@ const manifest = { $_apps_mobility_islands_ConsultMobility, "./routes/(apps)/mobility/(_islands)/EditMobility.tsx": $_apps_mobility_islands_EditMobility, - "./routes/(apps)/mobility/(_islands)/ImportFile.tsx": - $_apps_mobility_islands_ImportFile, "./routes/(apps)/students/(_islands)/ConsultStudents.tsx": $_apps_students_islands_ConsultStudents, "./routes/(apps)/students/(_islands)/EditStudents.tsx": diff --git a/routes/(apps)/mobility/(_islands)/ImportFile.tsx b/mobility.db similarity index 100% rename from routes/(apps)/mobility/(_islands)/ImportFile.tsx rename to mobility.db diff --git a/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx b/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx index fce84fb..b2a2357 100644 --- a/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx +++ b/routes/(apps)/mobility/(_islands)/ConsultMobility.tsx @@ -35,9 +35,9 @@ export default function ConsultMobility() { destinationCountry: existingMobility?.destinationCountry || null, destinationName: existingMobility?.destinationName || null, mobilityStatus: existingMobility?.mobilityStatus || "N/A", - attestationFile: existingMobility?.attestationFile || null, promotionId: student.promotionId, promotionName: student.promotionName, + attestationFile: existingMobility?.attestationFile || null, }; }); @@ -56,6 +56,16 @@ export default function ConsultMobility() { ? mobilityData : mobilityData.filter((entry) => entry.promotionId === selectedPromotion); + const downloadFile = (id: number | null) => { + if (!id) { + alert("No file available for download."); + return; + } + + const downloadUrl = `/mobility/api/download/${id}`; + window.open(downloadUrl, "_blank"); + }; + return (

Consult Mobility

@@ -117,15 +127,13 @@ export default function ConsultMobility() { {entry.mobilityStatus} {entry.attestationFile ? ( - downloadFile(entry.id)} > Download - + ) : ( - "N/A" + "No file" )} diff --git a/routes/(apps)/mobility/(_islands)/EditMobility.tsx b/routes/(apps)/mobility/(_islands)/EditMobility.tsx index 663493e..da6b535 100644 --- a/routes/(apps)/mobility/(_islands)/EditMobility.tsx +++ b/routes/(apps)/mobility/(_islands)/EditMobility.tsx @@ -49,31 +49,7 @@ export default function EditMobility() { setMobilityData((prev) => prev.map((entry) => - entry.studentId === studentId - ? { ...entry, attestationFile: file || null } - : entry - ) - ); - }; - - const handleRemoveFile = (studentId: string) => { - setMobilityData((prev) => - prev.map((entry) => - entry.studentId === studentId - ? { ...entry, attestationFile: null } - : entry - ) - ); - }; - - const handleChange = ( - studentId: string, - field: keyof MobilityData, - value: string | number | null - ) => { - setMobilityData((prev) => - prev.map((entry) => - entry.studentId === studentId ? { ...entry, [field]: value } : entry + entry.studentId === studentId ? { ...entry, attestationFile: file } : entry ) ); }; @@ -105,8 +81,6 @@ export default function EditMobility() { } }); - console.log("EditMobility: FormData prepared:", formData); - const response = await fetch("/mobility/api/insert-mobility", { method: "POST", body: formData, @@ -137,6 +111,10 @@ export default function EditMobility() { students: filteredData.filter((entry) => entry.promotionId === promo.id), })); + const handleDownload = (id: number) => { + window.open(`/mobility/api/download/${id}`, "_blank"); + }; + return (

Edit Mobility

@@ -192,7 +170,13 @@ export default function EditMobility() { type="date" value={entry.startDate || ""} onChange={(e) => - handleChange(entry.studentId, "startDate", e.target.value) + setMobilityData((prev) => + prev.map((data) => + data.studentId === entry.studentId + ? { ...data, startDate: e.target.value } + : data + ) + ) } /> @@ -201,7 +185,13 @@ export default function EditMobility() { type="date" value={entry.endDate || ""} onChange={(e) => - handleChange(entry.studentId, "endDate", e.target.value) + setMobilityData((prev) => + prev.map((data) => + data.studentId === entry.studentId + ? { ...data, endDate: e.target.value } + : data + ) + ) } /> @@ -211,10 +201,12 @@ export default function EditMobility() { type="text" value={entry.destinationCountry || ""} onChange={(e) => - handleChange( - entry.studentId, - "destinationCountry", - e.target.value + setMobilityData((prev) => + prev.map((data) => + data.studentId === entry.studentId + ? { ...data, destinationCountry: e.target.value } + : data + ) ) } /> @@ -224,7 +216,13 @@ export default function EditMobility() { type="text" value={entry.destinationName || ""} onChange={(e) => - handleChange(entry.studentId, "destinationName", e.target.value) + setMobilityData((prev) => + prev.map((data) => + data.studentId === entry.studentId + ? { ...data, destinationName: e.target.value } + : data + ) + ) } /> @@ -232,7 +230,13 @@ export default function EditMobility() {