'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { createRoom, updateRoom, RoomInput } from '@/lib/actions/room' import { uploadImageAction } from '@/lib/actions/upload' import { Loader2 } from 'lucide-react' import { ImageUploadModal } from '@/components/admin/ImageUploadModal' interface RoomFormProps { initialData?: RoomInput & { id: string } } export function RoomForm({ initialData }: RoomFormProps) { const router = useRouter() const [loading, setLoading] = useState(false) const [error, setError] = useState(null) const [formData, setFormData] = useState(initialData || { slug: '', type: 'STUDIO_1_0', nameTr: '', nameEn: '', nameDe: '', descriptionTr: '', descriptionEn: '', descriptionDe: '', capacity: 2, price: null, imageUrl: '', images: [], amenities: [], available: true, featured: false, }) // Helper for comma-separated arrays const handleArrayChange = (field: 'images' | 'amenities', value: string) => { const arrayValue = value.split(',').map(s => s.trim()).filter(Boolean) setFormData(prev => ({ ...prev, [field]: arrayValue })) } const handleMainImageComplete = (urls: string[]) => { if (urls.length > 0) { setFormData(prev => ({ ...prev, imageUrl: urls[0] })) } } const handleGalleryComplete = (urls: string[]) => { if (urls.length > 0) { setFormData(prev => ({ ...prev, images: [...prev.images, ...urls] })) } } const removeGalleryImage = (index: number) => { setFormData(prev => ({ ...prev, images: prev.images.filter((_, i) => i !== index) })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) setError(null) try { let result if (initialData?.id) { result = await updateRoom(initialData.id, formData) } else { result = await createRoom(formData) } if (result?.success) { router.push('/admin/rooms') router.refresh() } else { setError(result?.error || 'Bir hata oluştu.') } } catch (err) { setError('Bir hata oluştu.') } finally { setLoading(false) } } return (
{error && (
{error}
)}
setFormData(prev => ({ ...prev, slug: e.target.value }))} placeholder="ornek-oda-1" />
setFormData(prev => ({ ...prev, nameTr: e.target.value }))} />
setFormData(prev => ({ ...prev, nameEn: e.target.value }))} />
setFormData(prev => ({ ...prev, nameDe: e.target.value }))} />
setFormData(prev => ({ ...prev, capacity: parseInt(e.target.value) || 0 }))} />
setFormData(prev => ({ ...prev, price: e.target.value ? parseInt(e.target.value) : null }))} />