'use client' import { useState } from 'react' import { updateAssignment, completeAssignment } from '@/lib/sdk/training/api' import type { TrainingAssignment } from '@/lib/sdk/training/types' import { STATUS_LABELS, STATUS_COLORS } from '@/lib/sdk/training/types' export default function AssignmentDetailDrawer({ assignment, onClose, onSaved, }: { assignment: TrainingAssignment onClose: () => void onSaved: () => void }) { const [saving, setSaving] = useState(false) const [error, setError] = useState(null) const colors = STATUS_COLORS[assignment.status] async function handleComplete() { if (!window.confirm('Zuweisung als abgeschlossen markieren?')) return setSaving(true) try { await completeAssignment(assignment.id) onSaved() } catch (err) { setError(err instanceof Error ? err.message : 'Fehler') } finally { setSaving(false) } } async function handleExtend(e: React.FormEvent) { e.preventDefault() setSaving(true) setError(null) const fd = new FormData(e.currentTarget) try { await updateAssignment(assignment.id, { deadline: fd.get('deadline') as string }) onSaved() } catch (err) { setError(err instanceof Error ? err.message : 'Fehler beim Aktualisieren') } finally { setSaving(false) } } return (

Zuweisung

{error && (
{error}
)}
{STATUS_LABELS[assignment.status]} {assignment.started_at && } {assignment.completed_at && } {assignment.quiz_score != null && ( )} {assignment.escalation_level > 0 && ( )}
{assignment.status !== 'completed' && (

Frist verlaengern

)}
{assignment.status !== 'completed' && (
)}
) } function Row({ label, value, children }: { label: string; value?: string; children?: React.ReactNode }) { return (
{label}: {children ?? {value}}
) }