{"ast":null,"code":"var _jsxFileName = \"C:\\\\Users\\\\User\\\\Downloads\\\\medora5\\\\frontend\\\\src\\\\pages\\\\departments\\\\DepartmentDetail.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 DepartmentDetail() {\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(\"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: 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: 57,\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: 65,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-3 gap-6\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n className: \"text-xl font-bold mb-4\",\n children: \"Department Information\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 69,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-3\",\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex justify-between\",\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"font-semibold text-gray-600\",\n children: \"Department ID:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-800\",\n children: department.departmentId\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex justify-between\",\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"font-semibold text-gray-600\",\n children: \"Name:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 76,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-800\",\n children: formatDepartmentName(department.departmentName)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 77,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"flex justify-between\",\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n className: \"font-semibold text-gray-600\",\n children: \"Total Doctors:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n className: \"text-gray-800 font-bold\",\n children: doctors.length\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 81,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 79,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 68,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-blue-50 rounded-lg shadow p-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n className: \"text-xl font-bold mb-4\",\n children: \"Quick Actions\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 87,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"space-y-2\",\n children: /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate(`/departments/${departmentId}/doctors`),\n className: \"w-full bg-purple-600 text-white px-4 py-2 rounded hover:bg-purple-700\",\n children: \"View All Doctors\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 89,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 88,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 86,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 67,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n className: \"bg-white rounded-lg shadow p-6 mt-6\",\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n className: \"text-xl font-bold mb-4\",\n children: \"Assigned Doctors\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 9\n }, this), 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-4 py-2 text-left\",\n children: \"Name\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 105,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n className: \"px-4 py-2 text-left\",\n children: \"Email\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 106,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n className: \"px-4 py-2 text-left\",\n children: \"Actions\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 107,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 104,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 103,\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-4 py-2\",\n children: [doctor.firstName, \" \", doctor.lastName]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 113,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n className: \"px-4 py-2\",\n children: doctor.emailAddress\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 116,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n className: \"px-4 py-2\",\n children: /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate(`/doctors/${doctor.doctorId}`),\n className: \"text-purple-600 hover:underline text-sm\",\n children: \"View Profile\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 118,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 117,\n columnNumber: 19\n }, this)]\n }, doctor.doctorId, true, {\n fileName: _jsxFileName,\n lineNumber: 112,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 110,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 102,\n columnNumber: 11\n }, this) : /*#__PURE__*/_jsxDEV(\"p\", {\n className: \"text-gray-500 text-center py-4\",\n children: \"No doctors assigned to this department\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 130,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 99,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 54,\n columnNumber: 5\n }, this);\n}\n_s(DepartmentDetail, \"IonJ/fcDlMgvVVBpRoG52ARAm3k=\", false, function () {\n return [useParams, useNavigate];\n});\n_c = DepartmentDetail;\nexport default DepartmentDetail;\nvar _c;\n$RefreshReg$(_c, \"DepartmentDetail\");","map":{"version":3,"names":["React","useState","useEffect","useParams","useNavigate","departmentService","Loading","ErrorAlert","jsxDEV","_jsxDEV","DepartmentDetail","_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","onClick","length","doctor","firstName","lastName","emailAddress","doctorId","_c","$RefreshReg$"],"sources":["C:/Users/User/Downloads/medora5/frontend/src/pages/departments/DepartmentDetail.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 DepartmentDetail() {\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
| Name | \nActions | \n|
|---|---|---|
| \n {doctor.firstName} {doctor.lastName}\n | \n{doctor.emailAddress} | \n\n \n | \n
No doctors assigned to this department
\n )}\n