From 6252879bbdabe0b03c6087ea41a48009a5e81133 Mon Sep 17 00:00:00 2001 From: Erol Haagenrud Date: Mon, 27 Apr 2026 08:56:39 +0200 Subject: [PATCH] Ymse endringer (litt usikker...) --- frontend/src/app/admin/golfpakker/page.tsx | 52 +++++++++++++--------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/frontend/src/app/admin/golfpakker/page.tsx b/frontend/src/app/admin/golfpakker/page.tsx index c7f21fd..f974964 100644 --- a/frontend/src/app/admin/golfpakker/page.tsx +++ b/frontend/src/app/admin/golfpakker/page.tsx @@ -9,7 +9,7 @@ import { adminFetch } from "@/config/adminFetch"; type GolfpakkeRow = { navn: string; - pris: string; + pris: string | number; beskrivelse: string; lenke: string; }; @@ -21,6 +21,11 @@ const EMPTY_ROW: GolfpakkeRow = { lenke: '', }; +function normalizePriceInput(value: string | number | null | undefined): string { + if (value === null || value === undefined) return ''; + return String(value).trim(); +} + export default function GolfpakkerWasher() { const [drafts, setDrafts] = useState([]); const [loading, setLoading] = useState(true); @@ -51,7 +56,7 @@ export default function GolfpakkerWasher() { golfpakker_draft: parsedDraft, edit_golfpakker: suggestedPackages.map((row: any) => ({ navn: row?.navn || '', - pris: row?.pris ?? '', + pris: normalizePriceInput(row?.pris), beskrivelse: row?.beskrivelse || '', lenke: row?.lenke || '', })), @@ -102,27 +107,30 @@ export default function GolfpakkerWasher() { }; const handleApprove = async () => { - const approvals = drafts - .filter((draft) => selectedIds.includes(draft.id)) - .map((draft) => ({ - facility_id: draft.id, - golfpakker: draft.edit_golfpakker - .map((row: GolfpakkeRow) => ({ - navn: row.navn.trim(), - pris: row.pris.trim() ? Number(row.pris) : null, - beskrivelse: row.beskrivelse.trim(), - lenke: row.lenke.trim(), - })) - .filter((row: any) => row.navn || row.pris !== null || row.beskrivelse || row.lenke), - })); - - if (approvals.length === 0) { - alert("Velg minst ett anlegg å godkjenne."); - return; - } - - setSaving(true); try { + const approvals = drafts + .filter((draft) => selectedIds.includes(draft.id)) + .map((draft) => ({ + facility_id: draft.id, + golfpakker: draft.edit_golfpakker + .map((row: GolfpakkeRow) => { + const priceValue = normalizePriceInput(row.pris); + return { + navn: String(row.navn || '').trim(), + pris: priceValue ? Number(priceValue) : null, + beskrivelse: String(row.beskrivelse || '').trim(), + lenke: String(row.lenke || '').trim(), + }; + }) + .filter((row: any) => row.navn || row.pris !== null || row.beskrivelse || row.lenke), + })); + + if (approvals.length === 0) { + alert("Velg minst ett anlegg å godkjenne."); + return; + } + + setSaving(true); const res = await adminFetch(`${API_URL}/admin/golfpakker/approve-bulk`, { method: 'POST', headers: { 'Content-Type': 'application/json' },