import { useState, useEffect } from 'react' import { X } from 'lucide-react' import axios from 'axios' function DogForm({ dog, onClose, onSave }) { const [formData, setFormData] = useState({ name: '', registration_number: '', breed: '', sex: 'male', birth_date: '', color: '', microchip: '', notes: '', sire_id: '', dam_id: '', litter_id: '' }) const [dogs, setDogs] = useState([]) const [litters, setLitters] = useState([]) const [loading, setLoading] = useState(false) const [error, setError] = useState('') const [useManualParents, setUseManualParents] = useState(false) useEffect(() => { fetchDogs() fetchLitters() if (dog) { setFormData({ name: dog.name || '', registration_number: dog.registration_number || '', breed: dog.breed || '', sex: dog.sex || 'male', birth_date: dog.birth_date || '', color: dog.color || '', microchip: dog.microchip || '', notes: dog.notes || '', sire_id: dog.sire?.id || '', dam_id: dog.dam?.id || '', litter_id: dog.litter_id || '' }) setUseManualParents(!dog.litter_id) } }, [dog]) const fetchDogs = async () => { try { const res = await axios.get('/api/dogs') setDogs(res.data) } catch (error) { console.error('Error fetching dogs:', error) } } const fetchLitters = async () => { try { const res = await axios.get('/api/litters') setLitters(res.data) } catch (error) { console.error('Error fetching litters:', error) } } const handleChange = (e) => { const { name, value } = e.target setFormData(prev => ({ ...prev, [name]: value })) // If litter is selected, auto-populate parents if (name === 'litter_id' && value) { const selectedLitter = litters.find(l => l.id === parseInt(value)) if (selectedLitter) { setFormData(prev => ({ ...prev, sire_id: selectedLitter.sire_id, dam_id: selectedLitter.dam_id, breed: prev.breed || selectedLitter.sire_name?.split(' ')[0] || '' })) } } } const handleSubmit = async (e) => { e.preventDefault() setError('') setLoading(true) try { const submitData = { ...formData } // Clear litter_id if using manual parent selection if (useManualParents) { submitData.litter_id = null } if (dog) { // Update existing dog await axios.put(`/api/dogs/${dog.id}`, submitData) } else { // Create new dog await axios.post('/api/dogs', submitData) } onSave() onClose() } catch (error) { setError(error.response?.data?.error || 'Failed to save dog') setLoading(false) } } const males = dogs.filter(d => d.sex === 'male' && d.id !== dog?.id) const females = dogs.filter(d => d.sex === 'female' && d.id !== dog?.id) return (