// src/components/wagons/WagonFormDialog.tsx import { useState, useEffect } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@edr/ui-common'; import { useWagonTypes } from '@/hooks/use-wagon-types'; import { useCreateWagon, useUpdateWagon } from '@/hooks/useWagons'; import { useToast } from '@/hooks/use-toast'; interface WagonFormDialogProps { trigger?: React.ReactNode; wagon?: any; onSuccess?: () => void; } export function WagonFormDialog({ trigger, wagon, onSuccess }: WagonFormDialogProps) { const [open, setOpen] = useState(false); const [form, setForm] = useState({ wagonNumber: '', wagonTypeId: '', tareWeight: 0, maxPayloadWeight: 0, status: 'AVAILABLE', notes: '' }); const createWagon = useCreateWagon(); const updateWagon = useUpdateWagon(); const { data: wagonTypes = [], isLoading: wagonTypesLoading } = useWagonTypes(); const { toast } = useToast(); useEffect(() => { if (wagon) setForm({ wagonNumber: wagon.wagonNumber, wagonTypeId: wagon.wagonTypeId, tareWeight: wagon.tareWeight, maxPayloadWeight: wagon.maxPayloadWeight, status: wagon.status, notes: wagon.notes || '' }); }, [wagon]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!form.wagonNumber || !form.wagonTypeId) { toast({ title: 'Missing required field', description: 'Please select a wagon type.', variant: 'destructive' }); return; } try { if (wagon) await updateWagon.mutateAsync({ id: wagon.id, data: form }); else await createWagon.mutateAsync(form); toast({ title: wagon ? 'Wagon updated' : 'Wagon created', description: `${form.wagonNumber} saved.` }); setOpen(false); onSuccess?.(); } catch { toast({ title: 'Error', description: `Failed to ${wagon ? 'update' : 'create'} wagon.`, variant: 'destructive' }); } }; return ( {trigger || } {wagon ? 'Edit Wagon' : 'Create Wagon'}
setForm({...form, wagonNumber: e.target.value})} />
setForm({...form, tareWeight: Number(e.target.value)})} />
setForm({...form, maxPayloadWeight: Number(e.target.value)})} />
setForm({...form, status: e.target.value})} />
setForm({...form, notes: e.target.value})} />
); }