"use client" import { useState } from "react" import { useRouter } from "next/navigation" import Link from "next/link" import type { Event } from "@prisma/client" interface EditTournamentFormProps { tournament: Event } export default function EditTournamentForm({ tournament }: EditTournamentFormProps) { const router = useRouter() const [formData, setFormData] = useState({ name: tournament.name, description: tournament.description || "", eventDate: tournament.eventDate ? tournament.eventDate.toISOString().split('T')[0] : "", eventType: tournament.eventType, format: tournament.format, status: tournament.status, maxParticipants: tournament.maxParticipants?.toString() || "", targetScore: tournament.targetScore?.toString() || "", allowTies: tournament.allowTies || false, }) const [error, setError] = useState("") const [success, setSuccess] = useState("") const [isLoading, setIsLoading] = useState(false) const handleChange = (e: React.ChangeEvent) => { const { name, value, type } = e.target const checked = (e.target as HTMLInputElement).checked setFormData(prev => ({ ...prev, [name]: type === 'checkbox' ? checked : value, })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError("") setSuccess("") setIsLoading(true) try { const response = await fetch(`/api/tournaments/${tournament.id}`, { method: "PUT", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ ...formData, maxParticipants: formData.maxParticipants ? parseInt(formData.maxParticipants) : null, eventDate: formData.eventDate ? new Date(formData.eventDate).toISOString() : null, targetScore: formData.targetScore ? parseInt(formData.targetScore) : null, }), }) const data = await response.json() if (!response.ok) { setError(data.error || "Failed to update tournament") setIsLoading(false) return } setSuccess("Tournament updated successfully!") setIsLoading(false) // Redirect to tournament detail after 2 seconds setTimeout(() => { router.push(`/admin/tournaments/${tournament.id}`) }, 2000) } catch { setError("An error occurred. Please try again.") setIsLoading(false) } } return (
{error && (
{error}
)} {success && (
{success}
)}