"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { LogOut, Package, Clock, CheckCircle2, XCircle, AlertCircle, UserCog } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Separator } from "@/components/ui/separator"; import { supabase } from "@/lib/supabase"; import type { User } from "@supabase/supabase-js"; const STATUS_MAP: Record = { offen: { label: "Offen", icon: Clock, color: "text-amber-700 bg-amber-50 border-amber-200" }, bestaetigt: { label: "Bestätigt", icon: CheckCircle2, color: "text-green-700 bg-green-50 border-green-200" }, abgelehnt: { label: "Abgelehnt", icon: XCircle, color: "text-red-700 bg-red-50 border-red-200" }, abgeschlossen: { label: "Abgeschlossen", icon: CheckCircle2, color: "text-slate-600 bg-slate-50 border-slate-200" }, }; interface Anfrage { id: string; created_at: string; status: string; firma: string; telefon: string; email: string; notizen: string; anfragen_positionen: { id: string; maschine_name: string; mietbeginn: string; mietende: string; gesamt_tage: number; lieferung: boolean; tagessatz: number | null; }[]; } function formatDatum(iso: string) { return new Date(iso).toLocaleDateString("de-DE", { day: "2-digit", month: "2-digit", year: "numeric", }); } export default function KundenDashboardPage() { const router = useRouter(); const [user, setUser] = useState(null); const [anfragen, setAnfragen] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { async function init() { const { data: { session } } = await supabase.auth.getSession(); if (!session) { router.push("/kunden/login"); return; } setUser(session.user); // Anfragen laden const res = await fetch("/api/kunden/anfragen", { headers: { Authorization: `Bearer ${session.access_token}` }, }); if (res.ok) { const json = await res.json(); setAnfragen(json.anfragen ?? []); } setLoading(false); } init(); }, [router]); async function handleLogout() { await supabase.auth.signOut(); router.push("/kunden/login"); } if (loading) { return (

Wird geladen…

); } return (
{/* Header */}

Mein Bereich

{user?.email}

Profil
{/* Anfragen */}

Meine Anfragen

+ Neue Anfrage
{anfragen.length === 0 ? (

Noch keine Anfragen vorhanden

Stöbern Sie im Mietpark und stellen Sie Ihre erste Anfrage.

Zum Mietpark
) : (
{anfragen.map((anfrage) => { const st = STATUS_MAP[anfrage.status] ?? STATUS_MAP.offen; const Icon = st.icon; return (
{/* Anfrage-Header */}
{st.label} {formatDatum(anfrage.created_at)}
#{anfrage.id.slice(0, 8)}
{/* Positionen */}
{anfrage.anfragen_positionen.map((pos) => (

{pos.maschine_name}

{formatDatum(pos.mietbeginn)} – {formatDatum(pos.mietende)} · {pos.gesamt_tage} Tag{pos.gesamt_tage !== 1 ? "e" : ""} {pos.lieferung && " · Lieferung"}

{pos.tagessatz != null ? `${(pos.tagessatz * pos.gesamt_tage).toLocaleString("de-DE")} €` : "Auf Anfrage"}
))}
{/* Notiz vom Verleih */} {anfrage.notizen && (

{anfrage.notizen}

)}
); })}
)}
); }