diff --git a/dental-server/dental-client/src/App.jsx b/dental-server/dental-client/src/App.jsx index 9f326ee..48b6c06 100644 --- a/dental-server/dental-client/src/App.jsx +++ b/dental-server/dental-client/src/App.jsx @@ -11,6 +11,8 @@ import ClientsPage from './pages/ClientsPage'; import AdminClinicsPage from './pages/AdminClinicsPage'; import ResetPage from './pages/ResetPage'; import DownloadPage from './pages/DownloadPage'; +import PatientsPage from './pages/PatientsPage'; +import SettingsPage from './pages/SettingsPage'; export default function App() { return ( @@ -55,6 +57,18 @@ export default function App() { } /> + + + + } /> + + + + + } /> + {/* Catch-all: redireciona para home */} } /> diff --git a/dental-server/dental-client/src/components/EditPatientModal.jsx b/dental-server/dental-client/src/components/EditPatientModal.jsx new file mode 100644 index 0000000..d8bf0a1 --- /dev/null +++ b/dental-server/dental-client/src/components/EditPatientModal.jsx @@ -0,0 +1,81 @@ +import { useState, useEffect } from 'react'; +import Modal from './Modal'; +import api from '../api/client'; +import { useToast } from '../contexts/ToastContext'; + +export default function EditPatientModal({ isOpen, onClose, patient, onSaved }) { + const { showToast } = useToast(); + const [form, setForm] = useState({ newName: '', doctor: '', remark: '' }); + const [saving, setSaving] = useState(false); + + useEffect(() => { + if (patient) { + setForm({ + newName: patient.patient_name || '', + doctor: patient.doctor || '', + remark: patient.remark || '', + }); + } + }, [patient]); + + const set = (key) => (e) => setForm((prev) => ({ ...prev, [key]: e.target.value })); + + const handleSubmit = async (e) => { + e.preventDefault(); + if (!form.newName.trim()) return showToast('Nome é obrigatório.', 'error'); + setSaving(true); + try { + await api.put(`/images/patients/${encodeURIComponent(patient.patient_name)}`, form); + showToast('Paciente atualizado com sucesso!', 'success'); + onSaved?.(); + onClose(); + } catch (err) { + showToast(err.response?.data?.error || 'Erro ao salvar.', 'error'); + } finally { + setSaving(false); + } + }; + + return ( + +
+
+ + +
+
+ + +
+
+ +