import React, { useState, useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { doctorService } from '../../services/doctorService'; import ErrorAlert from '../../components/ErrorAlert'; import SuccessAlert from '../../components/SuccessAlert'; function DoctorForm() { const { id } = useParams(); const navigate = useNavigate(); const [formData, setFormData] = useState({ firstName: '', lastName: '', emailAddress: '', levelId: '', specializationId: '', departmentId: '', }); const [error, setError] = useState(null); const [success, setSuccess] = useState(null); const [loading, setLoading] = useState(false); useEffect(() => { if (id) { const fetchDoctor = async () => { try { setLoading(true); const response = await doctorService.getDoctorById(id); setFormData({ firstName: response.data.firstName, lastName: response.data.lastName, emailAddress: response.data.emailAddress, levelId: response.data.level?.levelId || '', specializationId: response.data.specialization?.specializationId || '', departmentId: response.data.department?.departmentId || '', }); } catch (err) { setError('Failed to fetch doctor'); } finally { setLoading(false); } }; fetchDoctor(); } }, [id]); const handleChange = (e) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value })); }; const handleSubmit = async (e) => { e.preventDefault(); if (!formData.firstName || !formData.lastName || !formData.emailAddress) { setError('Please fill in all required fields'); return; } try { setLoading(true); if (id) { await doctorService.updateDoctor(id, formData); setSuccess('Doctor updated successfully!'); } else { await doctorService.createDoctor(formData); setSuccess('Doctor created successfully!'); } setTimeout(() => navigate('/doctors'), 1500); } catch (err) { setError(err.response?.data?.error || 'Failed to save doctor'); } finally { setLoading(false); } }; return (

{id ? 'Edit Doctor' : 'Add New Doctor'}

{error && setError(null)} />} {success && setSuccess(null)} />}
); } export default DoctorForm;