From 1439d33584d063ded45242f4752b5c3e4809bce0 Mon Sep 17 00:00:00 2001 From: Bastien COIGNOUX Date: Mon, 14 Jul 2025 18:03:29 +0200 Subject: [PATCH] planning --- svar-gantt-app/data.db | Bin 20480 -> 20480 bytes .../src/routes/api/planning/+server.ts | 72 +++++++++++++++ .../src/routes/planning/+page.svelte | 86 ++++++++++++++++-- 3 files changed, 152 insertions(+), 6 deletions(-) create mode 100644 svar-gantt-app/src/routes/api/planning/+server.ts diff --git a/svar-gantt-app/data.db b/svar-gantt-app/data.db index 7a2ca9a1453db1540ad257b262c57aaaceb07979..652f09897fffac43f6bf1dfa3914dd4d0f0d2b31 100644 GIT binary patch delta 1051 zcmZ{iy-vbV7(iQ$h)Hj+gcuT(Qe(224A3I z^Bo*?axywPIxuUwUrPkquIJqEwx?gKL$^Bg{Tv-^&u`E{4WWpavK+=HBnxY zW9y$3c|r{@6%ItEcNC?-Zz{LMk!9k9>P}1oR&!!Yz^Y!oKh!rg)VeryLk^CxRXA92 zVsT)a6I%hMjxxRfr7?izQP^k8gmKrT()3s*s{nW9#-RdNa^boRDa^*a`5Sy=7g#m8 zqRRjYif|Wh9I9}NGuK54(r^W5!LGyQ33qrwC?uSFsYP>-_DgC-F$YpEcEYWWae_1>*F+g-My`zsOXS%Y`M)yof88voaF&1K1i8&$^?3wX8Gt|lDx?bl Dw^|SE diff --git a/svar-gantt-app/src/routes/api/planning/+server.ts b/svar-gantt-app/src/routes/api/planning/+server.ts new file mode 100644 index 0000000..dc10212 --- /dev/null +++ b/svar-gantt-app/src/routes/api/planning/+server.ts @@ -0,0 +1,72 @@ +import { json } from '@sveltejs/kit'; +import db from '$lib/server/db'; + +export async function POST({ request }) { + const body = await request.json(); + + try { + if (Array.isArray(body)) { + if (body.length > 1) { + // Cas d’un import CSV → remplacement total + const insert = db.prepare(` + INSERT INTO resource_planning (ressource, profil, date, disponibilite) + VALUES (@ressource, @profil, @date, @disponibilite) + `); + const clear = db.prepare(`DELETE FROM resource_planning`); + const transaction = db.transaction((data: any[]) => { + clear.run(); + for (const entry of data) { + insert.run(entry); + } + }); + + transaction(body); + } else if (body.length === 1) { + // Cas d'une modif manuelle → update ou insert + const { ressource, profil, date, disponibilite } = body[0]; + const existing = db.prepare(` + SELECT id FROM resource_planning + WHERE ressource = ? AND profil = ? AND date = ? + `).get(ressource, profil, date); + + if (existing) { + db.prepare(` + UPDATE resource_planning + SET disponibilite = ? + WHERE id = ? + `).run(disponibilite, existing.id); + } else { + db.prepare(` + INSERT INTO resource_planning (ressource, profil, date, disponibilite) + VALUES (?, ?, ?, ?) + `).run(ressource, profil, date, disponibilite); + } + } + } + + return json({ success: true }); + } catch (e) { + console.error('Erreur POST /api/planning', e); + return json({ success: false, error: e.message }, { status: 500 }); + } +} + +export async function GET() { + const rows = db.prepare(`SELECT * FROM resource_planning`).all(); + + const grouped = new Map(); + + for (const row of rows) { + const key = `${row.ressource}|${row.profil}`; + if (!grouped.has(key)) { + grouped.set(key, { + ressource: row.ressource, + profil: row.profil, + disponibilites: {} + }); + } + grouped.get(key).disponibilites[row.date] = row.disponibilite; + } + + return json(Array.from(grouped.values())); +} diff --git a/svar-gantt-app/src/routes/planning/+page.svelte b/svar-gantt-app/src/routes/planning/+page.svelte index 1312867..cd65228 100644 --- a/svar-gantt-app/src/routes/planning/+page.svelte +++ b/svar-gantt-app/src/routes/planning/+page.svelte @@ -1,5 +1,6 @@