{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\departments\\\\DoctorsByDepartment.js\",\n _s = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { departmentService } from '../../services/departmentService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction DoctorsByDepartment() {\n _s();\n const formatDepartmentName = name => {\n if (!name) return 'N/A';\n return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n };\n const {\n departmentId\n } = useParams();\n const navigate = useNavigate();\n const [department, setDepartment] = useState(null);\n const [doctors, setDoctors] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n useEffect(() => {\n const fetchDepartmentAndDoctors = async () => {\n try {\n setLoading(true);\n\n // Fetch department details\n const deptResponse = await departmentService.getDepartmentById(departmentId);\n setDepartment(deptResponse.data);\n\n // Fetch doctors for this department\n const doctorsResponse = await departmentService.getDoctorsByDepartment(departmentId);\n setDoctors(doctorsResponse.data);\n } catch (err) {\n setError('Failed to fetch data');\n console.error(err);\n } finally {\n setLoading(false);\n }\n };\n fetchDepartmentAndDoctors();\n }, [departmentId]);\n if (loading) return /*#__PURE__*/_jsxDEV(Loading, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 43,\n columnNumber: 23\n }, this);\n if (!department) {\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: /*#__PURE__*/_jsxDEV(ErrorAlert, {\n message: \"Department not found\",\n onClose: () => navigate('/departments')\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 48,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 47,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex justify-between items-center mb-6\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n className: \"text-3xl font-bold\",\n style: {\n color: '#7c3aed'\n },\n children: formatDepartmentName(department.departmentName)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 57,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-600\",\n children: [\"Doctors in this department: \", doctors.length]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 58,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 56,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate('/departments'),\n className: \"bg-gray-300 text-gray-700 px-4 py-2 rounded hover:bg-gray-400\",\n children: \"Back\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 60,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 55,\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: 68,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow overflow-hidden\",\n children: doctors.length > 0 ? /*#__PURE__*/_jsxDEV(\"table\", {\n className: \"w-full\",\n children: [/*#__PURE__*/_jsxDEV(\"thead\", {\n className: \"bg-gray-100\",\n children: /*#__PURE__*/_jsxDEV(\"tr\", {\n children: [/*#__PURE__*/_jsxDEV(\"th\", {\n className: \"px-6 py-3 text-left text-sm font-semibold\",\n children: \"Name\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n className: \"px-6 py-3 text-left text-sm font-semibold\",\n children: \"Email\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n className: \"px-6 py-3 text-left text-sm font-semibold\",\n children: \"Actions\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"tbody\", {\n children: doctors.map(doctor => /*#__PURE__*/_jsxDEV(\"tr\", {\n className: \"border-t hover:bg-gray-50\",\n children: [/*#__PURE__*/_jsxDEV(\"td\", {\n className: \"px-6 py-3\",\n children: [doctor.firstName, \" \", doctor.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 83,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n className: \"px-6 py-3\",\n children: doctor.emailAddress\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 86,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n className: \"px-6 py-3\",\n children: /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate(`/doctors/${doctor.doctorId}`),\n className: \"text-purple-600 hover:underline\",\n children: \"View Profile\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 88,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 87,\n columnNumber: 19\n }, this)]\n }, doctor.doctorId, true, {\n fileName: _jsxFileName,\n lineNumber: 82,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 11\n }, this) : /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"p-6 text-center\",\n children: /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-500\",\n children: \"No doctors assigned to this department\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 101,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 54,\n columnNumber: 5\n }, this);\n}\n_s(DoctorsByDepartment, \"IonJ/fcDlMgvVVBpRoG52ARAm3k=\", false, function () {\n return [useParams, useNavigate];\n});\n_c = DoctorsByDepartment;\nexport default DoctorsByDepartment;\nvar _c;\n$RefreshReg$(_c, \"DoctorsByDepartment\");","map":{"version":3,"names":["React","useState","useEffect","useParams","useNavigate","departmentService","Loading","ErrorAlert","jsxDEV","_jsxDEV","DoctorsByDepartment","_s","formatDepartmentName","name","replace","split","map","word","charAt","toUpperCase","slice","toLowerCase","join","departmentId","navigate","department","setDepartment","doctors","setDoctors","loading","setLoading","error","setError","fetchDepartmentAndDoctors","deptResponse","getDepartmentById","data","doctorsResponse","getDoctorsByDepartment","err","console","fileName","_jsxFileName","lineNumber","columnNumber","children","message","onClose","className","style","color","departmentName","length","onClick","doctor","firstName","lastName","emailAddress","doctorId","_c","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/departments/DoctorsByDepartment.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { departmentService } from '../../services/departmentService';\nimport Loading from '../../components/Loading';\nimport ErrorAlert from '../../components/ErrorAlert';\n\nfunction DoctorsByDepartment() {\n const formatDepartmentName = (name) => {\n if (!name) return 'N/A';\n return name.replace(/_DEPT$/, '').replace(/_/g, ' ').split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(' ');\n };\n\n const { departmentId } = useParams();\n const navigate = useNavigate();\n const [department, setDepartment] = useState(null);\n const [doctors, setDoctors] = useState([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n const fetchDepartmentAndDoctors = async () => {\n try {\n setLoading(true);\n\n // Fetch department details\n const deptResponse = await departmentService.getDepartmentById(departmentId);\n setDepartment(deptResponse.data);\n\n // Fetch doctors for this department\n const doctorsResponse = await departmentService.getDoctorsByDepartment(departmentId);\n setDoctors(doctorsResponse.data);\n } catch (err) {\n setError('Failed to fetch data');\n console.error(err);\n } finally {\n setLoading(false);\n }\n };\n\n fetchDepartmentAndDoctors();\n }, [departmentId]);\n\n if (loading) return
Doctors in this department: {doctors.length}
\n| Name | \nActions | \n|
|---|---|---|
| \n {doctor.firstName} {doctor.lastName}\n | \n{doctor.emailAddress} | \n\n \n | \n
No doctors assigned to this department
\n