Files
ETB/ETB-FrontEnd/node_modules/.cache/babel-loader/e20eed6b752f394b69f9886ee30ef2091db4688ba788665449ca38a57c0c71b4.json
Iliyan Angelov 306b20e24a Frontend start
2025-09-14 00:54:48 +03:00

1 line
61 KiB
JSON

{"ast":null,"code":"var _jsxFileName = \"/home/gnx/Desktop/ETB/ETB-FrontEnd/src/pages/Admin/UserManagement.tsx\",\n _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport { Grid, Paper, Typography, Box, Button, Chip, IconButton, TextField, InputAdornment, FormControl, InputLabel, Select, MenuItem, Dialog, DialogTitle, DialogContent, DialogActions, Avatar, Alert, Card, CardContent } from '@mui/material';\nimport { Search, Add, Edit, Delete } from '@mui/icons-material';\nimport { DataGrid } from '@mui/x-data-grid';\nimport { ROLES } from '../../components/Auth/AuthContext';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst mockUsers = [{\n id: 1,\n username: 'admin',\n email: 'admin@company.com',\n name: 'System Administrator',\n role: 'ADMIN',\n department: 'IT',\n lastLogin: '2024-01-15 10:30',\n status: 'active',\n avatar: null,\n created: '2024-01-01',\n permissions: ['All Permissions']\n}, {\n id: 2,\n username: 'john.smith',\n email: 'john.smith@company.com',\n name: 'John Smith',\n role: 'IT_STAFF',\n department: 'Infrastructure',\n lastLogin: '2024-01-15 09:45',\n status: 'active',\n avatar: null,\n created: '2024-01-02',\n permissions: ['Incident Management', 'Problem Management', 'Change Management']\n}, {\n id: 3,\n username: 'sarah.johnson',\n email: 'sarah.johnson@company.com',\n name: 'Sarah Johnson',\n role: 'MANAGER',\n department: 'IT Operations',\n lastLogin: '2024-01-15 08:20',\n status: 'active',\n avatar: null,\n created: '2024-01-03',\n permissions: ['Reporting', 'Management', 'Approval']\n}, {\n id: 4,\n username: 'mike.davis',\n email: 'mike.davis@company.com',\n name: 'Mike Davis',\n role: 'IT_STAFF',\n department: 'Applications',\n lastLogin: '2024-01-14 16:30',\n status: 'active',\n avatar: null,\n created: '2024-01-04',\n permissions: ['Incident Management', 'Problem Management']\n}, {\n id: 5,\n username: 'lisa.wilson',\n email: 'lisa.wilson@company.com',\n name: 'Lisa Wilson',\n role: 'END_USER',\n department: 'HR',\n lastLogin: '2024-01-15 11:15',\n status: 'active',\n avatar: null,\n created: '2024-01-05',\n permissions: ['Self-Service', 'Knowledge Base']\n}, {\n id: 6,\n username: 'auditor1',\n email: 'auditor1@company.com',\n name: 'Audit Specialist',\n role: 'AUDITOR',\n department: 'Compliance',\n lastLogin: '2024-01-14 14:20',\n status: 'active',\n avatar: null,\n created: '2024-01-06',\n permissions: ['Audit', 'Compliance', 'Reporting']\n}];\nconst UserManagement = () => {\n _s();\n var _ROLES6;\n const [users, setUsers] = useState(mockUsers);\n const [searchTerm, setSearchTerm] = useState('');\n const [roleFilter, setRoleFilter] = useState('All');\n const [statusFilter, setStatusFilter] = useState('All');\n const [selectedUser, setSelectedUser] = useState(null);\n const [userDialogOpen, setUserDialogOpen] = useState(false);\n const [newUser, setNewUser] = useState({\n username: '',\n email: '',\n name: '',\n role: 'END_USER',\n department: '',\n status: 'active'\n });\n const columns = [{\n field: 'id',\n headerName: 'ID',\n width: 80\n }, {\n field: 'avatar',\n headerName: 'Avatar',\n width: 80,\n renderCell: params => /*#__PURE__*/_jsxDEV(Avatar, {\n sx: {\n width: 32,\n height: 32,\n bgcolor: 'primary.main'\n },\n children: params.row.name.charAt(0)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 138,\n columnNumber: 9\n }, this)\n }, {\n field: 'name',\n headerName: 'Name',\n width: 200\n }, {\n field: 'username',\n headerName: 'Username',\n width: 150\n }, {\n field: 'email',\n headerName: 'Email',\n width: 250\n }, {\n field: 'role',\n headerName: 'Role',\n width: 120,\n renderCell: params => {\n var _ROLES, _ROLES2;\n return /*#__PURE__*/_jsxDEV(Chip, {\n label: ((_ROLES = ROLES[params.row.role]) === null || _ROLES === void 0 ? void 0 : _ROLES.name) || params.row.role,\n size: \"small\",\n sx: {\n bgcolor: ((_ROLES2 = ROLES[params.row.role]) === null || _ROLES2 === void 0 ? void 0 : _ROLES2.color) || 'default',\n color: 'white'\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 151,\n columnNumber: 9\n }, this);\n }\n }, {\n field: 'department',\n headerName: 'Department',\n width: 150\n }, {\n field: 'status',\n headerName: 'Status',\n width: 100,\n renderCell: params => /*#__PURE__*/_jsxDEV(Chip, {\n label: params.row.status,\n size: \"small\",\n color: params.row.status === 'active' ? 'success' : 'error'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 167,\n columnNumber: 9\n }, this)\n }, {\n field: 'lastLogin',\n headerName: 'Last Login',\n width: 150\n }, {\n field: 'actions',\n headerName: 'Actions',\n width: 120,\n renderCell: params => /*#__PURE__*/_jsxDEV(Box, {\n children: [/*#__PURE__*/_jsxDEV(IconButton, {\n size: \"small\",\n onClick: () => handleEditUser(params.row),\n children: /*#__PURE__*/_jsxDEV(Edit, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 182,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 181,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(IconButton, {\n size: \"small\",\n onClick: () => handleDeleteUser(params.row.id),\n children: /*#__PURE__*/_jsxDEV(Delete, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 185,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 184,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 180,\n columnNumber: 9\n }, this)\n }];\n const handleEditUser = user => {\n setSelectedUser(user);\n setNewUser(user);\n setUserDialogOpen(true);\n };\n const handleDeleteUser = userId => {\n if (window.confirm('Are you sure you want to delete this user?')) {\n setUsers(users.filter(u => u.id !== userId));\n }\n };\n const handleCreateUser = () => {\n setSelectedUser(null);\n setNewUser({\n username: '',\n email: '',\n name: '',\n role: 'END_USER',\n department: '',\n status: 'active'\n });\n setUserDialogOpen(true);\n };\n const handleSaveUser = () => {\n if (selectedUser) {\n // Update existing user\n setUsers(users.map(u => u.id === selectedUser.id ? {\n ...u,\n ...newUser,\n id: selectedUser.id\n } : u));\n } else {\n var _ROLES3;\n // Create new user\n const newId = Math.max(...users.map(u => u.id)) + 1;\n setUsers([...users, {\n ...newUser,\n id: newId,\n lastLogin: 'Never',\n avatar: null,\n created: new Date().toISOString().split('T')[0],\n permissions: ((_ROLES3 = ROLES[newUser.role]) === null || _ROLES3 === void 0 ? void 0 : _ROLES3.permissions) || []\n }]);\n }\n setUserDialogOpen(false);\n };\n const getRoleStats = () => {\n const stats = {};\n Object.keys(ROLES).forEach(role => {\n stats[role] = users.filter(u => u.role === role).length;\n });\n return stats;\n };\n const filteredUsers = users.filter(user => {\n const matchesSearch = user.name.toLowerCase().includes(searchTerm.toLowerCase()) || user.username.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase());\n const matchesRole = roleFilter === 'All' || user.role === roleFilter;\n const matchesStatus = statusFilter === 'All' || user.status === statusFilter;\n return matchesSearch && matchesRole && matchesStatus;\n });\n const roleStats = getRoleStats();\n return /*#__PURE__*/_jsxDEV(Box, {\n children: [/*#__PURE__*/_jsxDEV(Box, {\n sx: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n mb: 3\n },\n children: [/*#__PURE__*/_jsxDEV(Typography, {\n variant: \"h4\",\n gutterBottom: true,\n children: \"User Management\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 262,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n variant: \"contained\",\n startIcon: /*#__PURE__*/_jsxDEV(Add, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 267,\n columnNumber: 22\n }, this),\n onClick: handleCreateUser,\n children: \"Add User\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 265,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 261,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n container: true,\n spacing: 3,\n sx: {\n mb: 3\n },\n children: Object.entries(roleStats).map(([role, count]) => {\n var _ROLES4, _ROLES5;\n return /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n sm: 6,\n md: 2.4,\n children: /*#__PURE__*/_jsxDEV(Card, {\n children: /*#__PURE__*/_jsxDEV(CardContent, {\n sx: {\n textAlign: 'center'\n },\n children: [/*#__PURE__*/_jsxDEV(Typography, {\n variant: \"h4\",\n sx: {\n color: (_ROLES4 = ROLES[role]) === null || _ROLES4 === void 0 ? void 0 : _ROLES4.color\n },\n children: count\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 280,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Typography, {\n variant: \"body2\",\n color: \"text.secondary\",\n children: (_ROLES5 = ROLES[role]) === null || _ROLES5 === void 0 ? void 0 : _ROLES5.name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 283,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 279,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 278,\n columnNumber: 13\n }, this)\n }, role, false, {\n fileName: _jsxFileName,\n lineNumber: 277,\n columnNumber: 11\n }, this);\n })\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 275,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(Paper, {\n sx: {\n p: 2,\n mb: 3\n },\n children: /*#__PURE__*/_jsxDEV(Grid, {\n container: true,\n spacing: 2,\n alignItems: \"center\",\n children: [/*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 4,\n children: /*#__PURE__*/_jsxDEV(TextField, {\n fullWidth: true,\n placeholder: \"Search users...\",\n value: searchTerm,\n onChange: e => setSearchTerm(e.target.value),\n InputProps: {\n startAdornment: /*#__PURE__*/_jsxDEV(InputAdornment, {\n position: \"start\",\n children: /*#__PURE__*/_jsxDEV(Search, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 304,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 303,\n columnNumber: 19\n }, this)\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 296,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 295,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 3,\n children: /*#__PURE__*/_jsxDEV(FormControl, {\n fullWidth: true,\n children: [/*#__PURE__*/_jsxDEV(InputLabel, {\n children: \"Role\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 312,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Select, {\n value: roleFilter,\n label: \"Role\",\n onChange: e => setRoleFilter(e.target.value),\n children: [/*#__PURE__*/_jsxDEV(MenuItem, {\n value: \"All\",\n children: \"All Roles\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 318,\n columnNumber: 17\n }, this), Object.entries(ROLES).map(([key, role]) => /*#__PURE__*/_jsxDEV(MenuItem, {\n value: key,\n children: role.name\n }, key, false, {\n fileName: _jsxFileName,\n lineNumber: 320,\n columnNumber: 19\n }, this))]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 313,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 311,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 310,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 3,\n children: /*#__PURE__*/_jsxDEV(FormControl, {\n fullWidth: true,\n children: [/*#__PURE__*/_jsxDEV(InputLabel, {\n children: \"Status\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 327,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Select, {\n value: statusFilter,\n label: \"Status\",\n onChange: e => setStatusFilter(e.target.value),\n children: [/*#__PURE__*/_jsxDEV(MenuItem, {\n value: \"All\",\n children: \"All Status\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 333,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(MenuItem, {\n value: \"active\",\n children: \"Active\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 334,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(MenuItem, {\n value: \"inactive\",\n children: \"Inactive\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 335,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 328,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 326,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 325,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 294,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 293,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(Paper, {\n sx: {\n p: 2\n },\n children: /*#__PURE__*/_jsxDEV(DataGrid, {\n rows: filteredUsers,\n columns: columns,\n pageSize: 10,\n rowsPerPageOptions: [10, 25, 50],\n checkboxSelection: true,\n disableSelectionOnClick: true,\n sx: {\n height: 400\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 344,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 343,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(Dialog, {\n open: userDialogOpen,\n onClose: () => setUserDialogOpen(false),\n maxWidth: \"md\",\n fullWidth: true,\n children: [/*#__PURE__*/_jsxDEV(DialogTitle, {\n children: selectedUser ? 'Edit User' : 'Create New User'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 357,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(DialogContent, {\n children: /*#__PURE__*/_jsxDEV(Grid, {\n container: true,\n spacing: 2,\n sx: {\n mt: 1\n },\n children: [/*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 6,\n children: /*#__PURE__*/_jsxDEV(TextField, {\n fullWidth: true,\n label: \"Username\",\n value: newUser.username,\n onChange: e => setNewUser(prev => ({\n ...prev,\n username: e.target.value\n })),\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 363,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 362,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 6,\n children: /*#__PURE__*/_jsxDEV(TextField, {\n fullWidth: true,\n label: \"Email\",\n type: \"email\",\n value: newUser.email,\n onChange: e => setNewUser(prev => ({\n ...prev,\n email: e.target.value\n })),\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 372,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 371,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 6,\n children: /*#__PURE__*/_jsxDEV(TextField, {\n fullWidth: true,\n label: \"Full Name\",\n value: newUser.name,\n onChange: e => setNewUser(prev => ({\n ...prev,\n name: e.target.value\n })),\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 382,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 381,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 6,\n children: /*#__PURE__*/_jsxDEV(TextField, {\n fullWidth: true,\n label: \"Department\",\n value: newUser.department,\n onChange: e => setNewUser(prev => ({\n ...prev,\n department: e.target.value\n }))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 391,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 390,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 6,\n children: /*#__PURE__*/_jsxDEV(FormControl, {\n fullWidth: true,\n required: true,\n children: [/*#__PURE__*/_jsxDEV(InputLabel, {\n children: \"Role\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 400,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Select, {\n value: newUser.role,\n label: \"Role\",\n onChange: e => setNewUser(prev => ({\n ...prev,\n role: e.target.value\n })),\n children: Object.entries(ROLES).map(([key, role]) => /*#__PURE__*/_jsxDEV(MenuItem, {\n value: key,\n children: /*#__PURE__*/_jsxDEV(Box, {\n sx: {\n display: 'flex',\n alignItems: 'center'\n },\n children: [/*#__PURE__*/_jsxDEV(Box, {\n sx: {\n width: 12,\n height: 12,\n borderRadius: '50%',\n bgcolor: role.color,\n mr: 1\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 409,\n columnNumber: 25\n }, this), role.name]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 408,\n columnNumber: 23\n }, this)\n }, key, false, {\n fileName: _jsxFileName,\n lineNumber: 407,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 401,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 399,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 398,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n md: 6,\n children: /*#__PURE__*/_jsxDEV(FormControl, {\n fullWidth: true,\n children: [/*#__PURE__*/_jsxDEV(InputLabel, {\n children: \"Status\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 427,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Select, {\n value: newUser.status,\n label: \"Status\",\n onChange: e => setNewUser(prev => ({\n ...prev,\n status: e.target.value\n })),\n children: [/*#__PURE__*/_jsxDEV(MenuItem, {\n value: \"active\",\n children: \"Active\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 433,\n columnNumber: 19\n }, this), /*#__PURE__*/_jsxDEV(MenuItem, {\n value: \"inactive\",\n children: \"Inactive\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 434,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 428,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 426,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 425,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Grid, {\n item: true,\n xs: 12,\n children: /*#__PURE__*/_jsxDEV(Alert, {\n severity: \"info\",\n children: [/*#__PURE__*/_jsxDEV(Typography, {\n variant: \"subtitle2\",\n children: \"Role Permissions:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 440,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(Typography, {\n variant: \"body2\",\n children: ((_ROLES6 = ROLES[newUser.role]) === null || _ROLES6 === void 0 ? void 0 : _ROLES6.permissions.join(', ')) || 'No permissions'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 441,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 439,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 438,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 361,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 360,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(DialogActions, {\n children: [/*#__PURE__*/_jsxDEV(Button, {\n onClick: () => setUserDialogOpen(false),\n children: \"Cancel\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 449,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n variant: \"contained\",\n onClick: handleSaveUser,\n children: selectedUser ? 'Update' : 'Create'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 450,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 448,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 356,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 260,\n columnNumber: 5\n }, this);\n};\n_s(UserManagement, \"JQsqAQTsh67uafVjThl0i0uhYqQ=\");\n_c = UserManagement;\nexport default UserManagement;\nvar _c;\n$RefreshReg$(_c, \"UserManagement\");","map":{"version":3,"names":["React","useState","Grid","Paper","Typography","Box","Button","Chip","IconButton","TextField","InputAdornment","FormControl","InputLabel","Select","MenuItem","Dialog","DialogTitle","DialogContent","DialogActions","Avatar","Alert","Card","CardContent","Search","Add","Edit","Delete","DataGrid","ROLES","jsxDEV","_jsxDEV","mockUsers","id","username","email","name","role","department","lastLogin","status","avatar","created","permissions","UserManagement","_s","_ROLES6","users","setUsers","searchTerm","setSearchTerm","roleFilter","setRoleFilter","statusFilter","setStatusFilter","selectedUser","setSelectedUser","userDialogOpen","setUserDialogOpen","newUser","setNewUser","columns","field","headerName","width","renderCell","params","sx","height","bgcolor","children","row","charAt","fileName","_jsxFileName","lineNumber","columnNumber","_ROLES","_ROLES2","label","size","color","onClick","handleEditUser","handleDeleteUser","user","userId","window","confirm","filter","u","handleCreateUser","handleSaveUser","map","_ROLES3","newId","Math","max","Date","toISOString","split","getRoleStats","stats","Object","keys","forEach","length","filteredUsers","matchesSearch","toLowerCase","includes","matchesRole","matchesStatus","roleStats","display","justifyContent","alignItems","mb","variant","gutterBottom","startIcon","container","spacing","entries","count","_ROLES4","_ROLES5","item","xs","sm","md","textAlign","p","fullWidth","placeholder","value","onChange","e","target","InputProps","startAdornment","position","key","rows","pageSize","rowsPerPageOptions","checkboxSelection","disableSelectionOnClick","open","onClose","maxWidth","mt","prev","required","type","borderRadius","mr","severity","join","_c","$RefreshReg$"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/src/pages/Admin/UserManagement.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Grid,\n Paper,\n Typography,\n Box,\n Button,\n Chip,\n IconButton,\n TextField,\n InputAdornment,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Avatar,\n Alert,\n Card,\n CardContent,\n} from '@mui/material';\nimport {\n Search,\n Add,\n Edit,\n Delete,\n} from '@mui/icons-material';\nimport { DataGrid } from '@mui/x-data-grid';\nimport { ROLES } from '../../components/Auth/AuthContext';\n\nconst mockUsers = [\n {\n id: 1,\n username: 'admin',\n email: 'admin@company.com',\n name: 'System Administrator',\n role: 'ADMIN',\n department: 'IT',\n lastLogin: '2024-01-15 10:30',\n status: 'active',\n avatar: null,\n created: '2024-01-01',\n permissions: ['All Permissions']\n },\n {\n id: 2,\n username: 'john.smith',\n email: 'john.smith@company.com',\n name: 'John Smith',\n role: 'IT_STAFF',\n department: 'Infrastructure',\n lastLogin: '2024-01-15 09:45',\n status: 'active',\n avatar: null,\n created: '2024-01-02',\n permissions: ['Incident Management', 'Problem Management', 'Change Management']\n },\n {\n id: 3,\n username: 'sarah.johnson',\n email: 'sarah.johnson@company.com',\n name: 'Sarah Johnson',\n role: 'MANAGER',\n department: 'IT Operations',\n lastLogin: '2024-01-15 08:20',\n status: 'active',\n avatar: null,\n created: '2024-01-03',\n permissions: ['Reporting', 'Management', 'Approval']\n },\n {\n id: 4,\n username: 'mike.davis',\n email: 'mike.davis@company.com',\n name: 'Mike Davis',\n role: 'IT_STAFF',\n department: 'Applications',\n lastLogin: '2024-01-14 16:30',\n status: 'active',\n avatar: null,\n created: '2024-01-04',\n permissions: ['Incident Management', 'Problem Management']\n },\n {\n id: 5,\n username: 'lisa.wilson',\n email: 'lisa.wilson@company.com',\n name: 'Lisa Wilson',\n role: 'END_USER',\n department: 'HR',\n lastLogin: '2024-01-15 11:15',\n status: 'active',\n avatar: null,\n created: '2024-01-05',\n permissions: ['Self-Service', 'Knowledge Base']\n },\n {\n id: 6,\n username: 'auditor1',\n email: 'auditor1@company.com',\n name: 'Audit Specialist',\n role: 'AUDITOR',\n department: 'Compliance',\n lastLogin: '2024-01-14 14:20',\n status: 'active',\n avatar: null,\n created: '2024-01-06',\n permissions: ['Audit', 'Compliance', 'Reporting']\n }\n];\n\nconst UserManagement: React.FC = () => {\n const [users, setUsers] = useState(mockUsers);\n const [searchTerm, setSearchTerm] = useState('');\n const [roleFilter, setRoleFilter] = useState('All');\n const [statusFilter, setStatusFilter] = useState('All');\n const [selectedUser, setSelectedUser] = useState<any>(null);\n const [userDialogOpen, setUserDialogOpen] = useState<boolean>(false);\n const [newUser, setNewUser] = useState({\n username: '',\n email: '',\n name: '',\n role: 'END_USER',\n department: '',\n status: 'active'\n });\n\n const columns = [\n { field: 'id', headerName: 'ID', width: 80 },\n {\n field: 'avatar',\n headerName: 'Avatar',\n width: 80,\n renderCell: (params: any) => (\n <Avatar sx={{ width: 32, height: 32, bgcolor: 'primary.main' }}>\n {params.row.name.charAt(0)}\n </Avatar>\n ),\n },\n { field: 'name', headerName: 'Name', width: 200 },\n { field: 'username', headerName: 'Username', width: 150 },\n { field: 'email', headerName: 'Email', width: 250 },\n {\n field: 'role',\n headerName: 'Role',\n width: 120,\n renderCell: (params: any) => (\n <Chip\n label={ROLES[params.row.role as keyof typeof ROLES]?.name || params.row.role}\n size=\"small\"\n sx={{\n bgcolor: ROLES[params.row.role as keyof typeof ROLES]?.color || 'default',\n color: 'white'\n }}\n />\n ),\n },\n { field: 'department', headerName: 'Department', width: 150 },\n {\n field: 'status',\n headerName: 'Status',\n width: 100,\n renderCell: (params: any) => (\n <Chip\n label={params.row.status}\n size=\"small\"\n color={params.row.status === 'active' ? 'success' : 'error'}\n />\n ),\n },\n { field: 'lastLogin', headerName: 'Last Login', width: 150 },\n {\n field: 'actions',\n headerName: 'Actions',\n width: 120,\n renderCell: (params: any) => (\n <Box>\n <IconButton size=\"small\" onClick={() => handleEditUser(params.row)}>\n <Edit />\n </IconButton>\n <IconButton size=\"small\" onClick={() => handleDeleteUser(params.row.id)}>\n <Delete />\n </IconButton>\n </Box>\n ),\n },\n ];\n\n const handleEditUser = (user: any) => {\n setSelectedUser(user);\n setNewUser(user);\n setUserDialogOpen(true);\n };\n\n const handleDeleteUser = (userId: any) => {\n if (window.confirm('Are you sure you want to delete this user?')) {\n setUsers(users.filter(u => u.id !== userId));\n }\n };\n\n const handleCreateUser = () => {\n setSelectedUser(null);\n setNewUser({\n username: '',\n email: '',\n name: '',\n role: 'END_USER',\n department: '',\n status: 'active'\n });\n setUserDialogOpen(true);\n };\n\n const handleSaveUser = () => {\n if (selectedUser) {\n // Update existing user\n setUsers(users.map(u => u.id === selectedUser.id ? { \n ...u,\n ...newUser, \n id: selectedUser.id \n } : u));\n } else {\n // Create new user\n const newId = Math.max(...users.map(u => u.id)) + 1;\n setUsers([...users, { \n ...newUser, \n id: newId, \n lastLogin: 'Never',\n avatar: null,\n created: new Date().toISOString().split('T')[0],\n permissions: ROLES[newUser.role as keyof typeof ROLES]?.permissions || []\n }]);\n }\n setUserDialogOpen(false);\n };\n\n const getRoleStats = () => {\n const stats: { [key: string]: number } = {};\n Object.keys(ROLES).forEach(role => {\n stats[role] = users.filter(u => u.role === role).length;\n });\n return stats;\n };\n\n const filteredUsers = users.filter(user => {\n const matchesSearch = user.name.toLowerCase().includes(searchTerm.toLowerCase()) ||\n user.username.toLowerCase().includes(searchTerm.toLowerCase()) ||\n user.email.toLowerCase().includes(searchTerm.toLowerCase());\n const matchesRole = roleFilter === 'All' || user.role === roleFilter;\n const matchesStatus = statusFilter === 'All' || user.status === statusFilter;\n return matchesSearch && matchesRole && matchesStatus;\n });\n\n const roleStats = getRoleStats();\n\n return (\n <Box>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 3 }}>\n <Typography variant=\"h4\" gutterBottom>\n User Management\n </Typography>\n <Button\n variant=\"contained\"\n startIcon={<Add />}\n onClick={handleCreateUser}\n >\n Add User\n </Button>\n </Box>\n\n {/* Role Statistics */}\n <Grid container spacing={3} sx={{ mb: 3 }}>\n {Object.entries(roleStats).map(([role, count]) => (\n <Grid item xs={12} sm={6} md={2.4} key={role}>\n <Card>\n <CardContent sx={{ textAlign: 'center' }}>\n <Typography variant=\"h4\" sx={{ color: ROLES[role as keyof typeof ROLES]?.color }}>\n {count as number}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {ROLES[role as keyof typeof ROLES]?.name}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n ))}\n </Grid>\n\n {/* Filters */}\n <Paper sx={{ p: 2, mb: 3 }}>\n <Grid container spacing={2} alignItems=\"center\">\n <Grid item xs={12} md={4}>\n <TextField\n fullWidth\n placeholder=\"Search users...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n ),\n }}\n />\n </Grid>\n <Grid item xs={12} md={3}>\n <FormControl fullWidth>\n <InputLabel>Role</InputLabel>\n <Select\n value={roleFilter}\n label=\"Role\"\n onChange={(e) => setRoleFilter(e.target.value)}\n >\n <MenuItem value=\"All\">All Roles</MenuItem>\n {Object.entries(ROLES).map(([key, role]) => (\n <MenuItem key={key} value={key}>{role.name}</MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={12} md={3}>\n <FormControl fullWidth>\n <InputLabel>Status</InputLabel>\n <Select\n value={statusFilter}\n label=\"Status\"\n onChange={(e) => setStatusFilter(e.target.value)}\n >\n <MenuItem value=\"All\">All Status</MenuItem>\n <MenuItem value=\"active\">Active</MenuItem>\n <MenuItem value=\"inactive\">Inactive</MenuItem>\n </Select>\n </FormControl>\n </Grid>\n </Grid>\n </Paper>\n\n {/* Users Table */}\n <Paper sx={{ p: 2 }}>\n <DataGrid\n rows={filteredUsers}\n columns={columns}\n pageSize={10}\n rowsPerPageOptions={[10, 25, 50]}\n checkboxSelection\n disableSelectionOnClick\n sx={{ height: 400 }}\n />\n </Paper>\n\n {/* User Dialog */}\n <Dialog open={userDialogOpen} onClose={() => setUserDialogOpen(false)} maxWidth=\"md\" fullWidth>\n <DialogTitle>\n {selectedUser ? 'Edit User' : 'Create New User'}\n </DialogTitle>\n <DialogContent>\n <Grid container spacing={2} sx={{ mt: 1 }}>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Username\"\n value={newUser.username}\n onChange={(e) => setNewUser(prev => ({ ...prev, username: e.target.value }))}\n required\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Email\"\n type=\"email\"\n value={newUser.email}\n onChange={(e) => setNewUser(prev => ({ ...prev, email: e.target.value }))}\n required\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Full Name\"\n value={newUser.name}\n onChange={(e) => setNewUser(prev => ({ ...prev, name: e.target.value }))}\n required\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Department\"\n value={newUser.department}\n onChange={(e) => setNewUser(prev => ({ ...prev, department: e.target.value }))}\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <FormControl fullWidth required>\n <InputLabel>Role</InputLabel>\n <Select\n value={newUser.role}\n label=\"Role\"\n onChange={(e) => setNewUser(prev => ({ ...prev, role: e.target.value }))}\n >\n {Object.entries(ROLES).map(([key, role]) => (\n <MenuItem key={key} value={key}>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Box\n sx={{\n width: 12,\n height: 12,\n borderRadius: '50%',\n bgcolor: role.color,\n mr: 1,\n }}\n />\n {role.name}\n </Box>\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={12} md={6}>\n <FormControl fullWidth>\n <InputLabel>Status</InputLabel>\n <Select\n value={newUser.status}\n label=\"Status\"\n onChange={(e) => setNewUser(prev => ({ ...prev, status: e.target.value }))}\n >\n <MenuItem value=\"active\">Active</MenuItem>\n <MenuItem value=\"inactive\">Inactive</MenuItem>\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={12}>\n <Alert severity=\"info\">\n <Typography variant=\"subtitle2\">Role Permissions:</Typography>\n <Typography variant=\"body2\">\n {ROLES[newUser.role as keyof typeof ROLES]?.permissions.join(', ') || 'No permissions'}\n </Typography>\n </Alert>\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => setUserDialogOpen(false)}>Cancel</Button>\n <Button variant=\"contained\" onClick={handleSaveUser}>\n {selectedUser ? 'Update' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n );\n}\n\nexport default UserManagement;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}