{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\doctors\\\\DoctorForm.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { doctorService } from '../../services/doctorService';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport SuccessAlert from '../../components/SuccessAlert';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction DoctorForm() {\n _s();\n const {\n id\n } = useParams();\n const navigate = useNavigate();\n const [formData, setFormData] = useState({\n firstName: '',\n lastName: '',\n emailAddress: '',\n levelId: '',\n specializationId: '',\n departmentId: ''\n });\n const [error, setError] = useState(null);\n const [success, setSuccess] = useState(null);\n const [loading, setLoading] = useState(false);\n useEffect(() => {\n if (id) {\n const fetchDoctor = async () => {\n try {\n var _response$data$level, _response$data$specia, _response$data$depart;\n setLoading(true);\n const response = await doctorService.getDoctorById(id);\n setFormData({\n firstName: response.data.firstName,\n lastName: response.data.lastName,\n emailAddress: response.data.emailAddress,\n levelId: ((_response$data$level = response.data.level) === null || _response$data$level === void 0 ? void 0 : _response$data$level.levelId) || '',\n specializationId: ((_response$data$specia = response.data.specialization) === null || _response$data$specia === void 0 ? void 0 : _response$data$specia.specializationId) || '',\n departmentId: ((_response$data$depart = response.data.department) === null || _response$data$depart === void 0 ? void 0 : _response$data$depart.departmentId) || ''\n });\n } catch (err) {\n setError('Failed to fetch doctor');\n } finally {\n setLoading(false);\n }\n };\n fetchDoctor();\n }\n }, [id]);\n const handleChange = e => {\n const {\n name,\n value\n } = e.target;\n setFormData(prev => ({\n ...prev,\n [name]: value\n }));\n };\n const handleSubmit = async e => {\n e.preventDefault();\n if (!formData.firstName || !formData.lastName || !formData.emailAddress) {\n setError('Please fill in all required fields');\n return;\n }\n try {\n setLoading(true);\n if (id) {\n await doctorService.updateDoctor(id, formData);\n setSuccess('Doctor updated successfully!');\n } else {\n await doctorService.createDoctor(formData);\n setSuccess('Doctor created successfully!');\n }\n setTimeout(() => navigate('/doctors'), 1500);\n } catch (err) {\n var _err$response, _err$response$data;\n setError(((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.error) || 'Failed to save doctor');\n } finally {\n setLoading(false);\n }\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"max-w-2xl mx-auto\",\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n className: \"text-3xl font-bold mb-6\",\n children: id ? 'Edit Doctor' : 'Add New Doctor'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 82,\n columnNumber: 7\n }, this), error && /*#__PURE__*/_jsxDEV(ErrorAlert, {\n message: error,\n onClose: () => setError(null)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 86,\n columnNumber: 17\n }, this), success && /*#__PURE__*/_jsxDEV(SuccessAlert, {\n message: success,\n onClose: () => setSuccess(null)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 87,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleSubmit,\n className: \"bg-white rounded-lg shadow p-6 space-y-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-2 gap-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-semibold mb-2\",\n children: \"First Name *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 92,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n name: \"firstName\",\n value: formData.firstName,\n onChange: handleChange,\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 93,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 91,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-semibold mb-2\",\n children: \"Last Name *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 103,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n name: \"lastName\",\n value: formData.lastName,\n onChange: handleChange,\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 104,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 102,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 90,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-semibold mb-2\",\n children: \"Email *\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 116,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"email\",\n name: \"emailAddress\",\n value: formData.emailAddress,\n onChange: handleChange,\n className: \"w-full px-4 py-2 border rounded-lg\",\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 117,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 115,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-3 gap-4\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-semibold mb-2\",\n children: \"Level\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"number\",\n name: \"levelId\",\n value: formData.levelId,\n onChange: handleChange,\n placeholder: \"Level ID\",\n className: \"w-full px-4 py-2 border rounded-lg\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 130,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-semibold mb-2\",\n children: \"Specialization\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 140,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"number\",\n name: \"specializationId\",\n value: formData.specializationId,\n onChange: handleChange,\n placeholder: \"Spec. ID\",\n className: \"w-full px-4 py-2 border rounded-lg\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 139,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n className: \"block text-sm font-semibold mb-2\",\n children: \"Department\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 151,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"number\",\n name: \"departmentId\",\n value: formData.departmentId,\n onChange: handleChange,\n placeholder: \"Dept. ID\",\n className: \"w-full px-4 py-2 border rounded-lg\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 152,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 150,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex gap-4 pt-4\",\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n disabled: loading,\n className: \"bg-purple-600 text-white px-6 py-2 rounded hover:bg-purple-700 disabled:opacity-50\",\n children: loading ? 'Saving...' : 'Save Doctor'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 164,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"button\",\n onClick: () => navigate('/doctors'),\n className: \"bg-gray-300 text-gray-700 px-6 py-2 rounded hover:bg-gray-400\",\n children: \"Cancel\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 171,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 163,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 89,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 81,\n columnNumber: 5\n }, this);\n}\n_s(DoctorForm, \"zDbZCrTAGayCxpgTmFzQqJzbB7w=\", false, function () {\n return [useParams, useNavigate];\n});\n_c = DoctorForm;\nexport default DoctorForm;\nvar _c;\n$RefreshReg$(_c, \"DoctorForm\");","map":{"version":3,"names":["React","useState","useEffect","useNavigate","useParams","doctorService","ErrorAlert","SuccessAlert","jsxDEV","_jsxDEV","DoctorForm","_s","id","navigate","formData","setFormData","firstName","lastName","emailAddress","levelId","specializationId","departmentId","error","setError","success","setSuccess","loading","setLoading","fetchDoctor","_response$data$level","_response$data$specia","_response$data$depart","response","getDoctorById","data","level","specialization","department","err","handleChange","e","name","value","target","prev","handleSubmit","preventDefault","updateDoctor","createDoctor","setTimeout","_err$response","_err$response$data","className","children","fileName","_jsxFileName","lineNumber","columnNumber","message","onClose","onSubmit","type","onChange","required","placeholder","disabled","onClick","_c","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/doctors/DoctorForm.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { doctorService } from '../../services/doctorService';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport SuccessAlert from '../../components/SuccessAlert';\n\nfunction DoctorForm() {\n const { id } = useParams();\n const navigate = useNavigate();\n const [formData, setFormData] = useState({\n firstName: '',\n lastName: '',\n emailAddress: '',\n levelId: '',\n specializationId: '',\n departmentId: '',\n });\n const [error, setError] = useState(null);\n const [success, setSuccess] = useState(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (id) {\n const fetchDoctor = async () => {\n try {\n setLoading(true);\n const response = await doctorService.getDoctorById(id);\n setFormData({\n firstName: response.data.firstName,\n lastName: response.data.lastName,\n emailAddress: response.data.emailAddress,\n levelId: response.data.level?.levelId || '',\n specializationId: response.data.specialization?.specializationId || '',\n departmentId: response.data.department?.departmentId || '',\n });\n } catch (err) {\n setError('Failed to fetch doctor');\n } finally {\n setLoading(false);\n }\n };\n\n fetchDoctor();\n }\n }, [id]);\n\n const handleChange = (e) => {\n const { name, value } = e.target;\n setFormData(prev => ({\n ...prev,\n [name]: value\n }));\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n if (!formData.firstName || !formData.lastName || !formData.emailAddress) {\n setError('Please fill in all required fields');\n return;\n }\n\n try {\n setLoading(true);\n if (id) {\n await doctorService.updateDoctor(id, formData);\n setSuccess('Doctor updated successfully!');\n } else {\n await doctorService.createDoctor(formData);\n setSuccess('Doctor created successfully!');\n }\n setTimeout(() => navigate('/doctors'), 1500);\n } catch (err) {\n setError(err.response?.data?.error || 'Failed to save doctor');\n } finally {\n setLoading(false);\n }\n };\n\n return (\n