"use client"; import { useState, useEffect } from 'react'; import { API_URL } from "@/config/constants"; import Link from 'next/link'; export default function MembershipWasher() { const [drafts, setDrafts] = useState([]); const [loading, setLoading] = useState(true); const [selectedIds, setSelectedIds] = useState([]); const [saving, setSaving] = useState(false); const fetchDrafts = () => { setLoading(true); fetch(`${API_URL}/admin/membership/drafts`) .then(res => res.json()) .then(data => { // Konverter innkommende drafts til editerbare felter lokalt const editableDrafts = data.map((f: any) => ({ ...f, edit_standard_navn: f.membership_draft?.foreslatt_standard_navn || f.navn_standard_medlemskap || "", edit_standard_pris: f.membership_draft?.foreslatt_standard_pris || f.standard_medlemskap || "", edit_standard_kommentar: f.membership_draft?.foreslatt_standard_kommentar || "", edit_rimeligste_navn: f.membership_draft?.foreslatt_rimeligste_navn || f.navn_rimeligste_alternativ || "", edit_rimeligste_pris: f.membership_draft?.foreslatt_rimeligste_pris || f.rimeligste_alternativ || "", })); setDrafts(editableDrafts); setLoading(false); }) .catch(() => setLoading(false)); }; useEffect(() => { fetchDrafts(); }, []); const toggleSelectAll = (checked: boolean) => { if (checked) setSelectedIds(drafts.map(d => d.id)); else setSelectedIds([]); }; const toggleOne = (id: number) => { if (selectedIds.includes(id)) setSelectedIds(selectedIds.filter(i => i !== id)); else setSelectedIds([...selectedIds, id]); }; const updateDraftField = (id: number, field: string, value: any) => { setDrafts(drafts.map(d => d.id === id ? { ...d, [field]: value } : d)); }; const handleApprove = async () => { const toApprove = drafts.filter(d => selectedIds.includes(d.id)).map(d => ({ facility_id: d.id, navn_standard_medlemskap: d.edit_standard_navn, standard_medlemskap: Number(d.edit_standard_pris) || null, standard_medlemskap_kommentarer: d.edit_standard_kommentar, navn_rimeligste_alternativ: d.edit_rimeligste_navn, rimeligste_alternativ: Number(d.edit_rimeligste_pris) || null, })); if (toApprove.length === 0) return alert("Velg minst ett anlegg å godkjenne."); setSaving(true); try { const res = await fetch(`${API_URL}/admin/membership/approve-bulk`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ approvals: toApprove }) }); if (res.ok) { alert(`${toApprove.length} anlegg ble oppdatert og lagret til live!`); setSelectedIds([]); fetchDrafts(); // Oppdaterer listen (fjerner de godkjente) } else { alert("Noe gikk galt under lagring."); } } catch (e) { alert("Nettverksfeil"); } setSaving(false); }; if (loading) return
Laster utkast...
; return (
← Tilbake til oversikten

Medlemskaps-Vaskeriet

Gå gjennom AI-ens forslag, juster hvis nødvendig, og godkjenn for å publisere. Oppdatert-dato settes automatisk i dag.

{drafts.length === 0 ? (
🧹

Alt er rent og pent!

Ingen ventende forslag fra AI-skraperen akkurat nå.

) : (
toggleSelectAll(e.target.checked)} /> Velg Alle
{drafts.map(draft => (
toggleOne(draft.id)} />
{/* OPPDATERT: Navn + ID Badge */}

{draft.name} ID: {draft.id}

Sjekk Klubbens Nettside ↗
{draft.membership_draft?.ai_begrunnelse && (
🤖 AI Begrunnelse: {draft.membership_draft.ai_begrunnelse}
)}
{/* Standard */}

Standard Medlemskap (Ubegrenset)

updateDraftField(draft.id, 'edit_standard_navn', e.target.value)} placeholder="Navn (eks. Hovedmedlem)" /> updateDraftField(draft.id, 'edit_standard_pris', e.target.value)} placeholder="Pris" />
updateDraftField(draft.id, 'edit_standard_kommentar', e.target.value)} placeholder="Kommentar (F.eks: Inkluderer ikke treningsavgift)" />

Gammel pris var: {draft.standard_medlemskap ? `kr ${draft.standard_medlemskap} (${draft.navn_standard_medlemskap})` : 'Ikke registrert'}

{/* Rimeligste */}

Rimeligste (Betaler Greenfee)

updateDraftField(draft.id, 'edit_rimeligste_navn', e.target.value)} placeholder="Navn (eks. Greenfeemedlem)" /> updateDraftField(draft.id, 'edit_rimeligste_pris', e.target.value)} placeholder="Pris" />

Gammel pris var: {draft.rimeligste_alternativ ? `kr ${draft.rimeligste_alternativ} (${draft.navn_rimeligste_alternativ})` : 'Ikke registrert'}

))}
)}
); }