diff --git a/src/APIs/IntranetUsersAPIs/getUsersList.tsx b/src/APIs/IntranetUsersAPIs/getUsersList.tsx new file mode 100644 index 0000000..75ec8fe --- /dev/null +++ b/src/APIs/IntranetUsersAPIs/getUsersList.tsx @@ -0,0 +1,19 @@ +import {useQuery} from '@tanstack/react-query' + +export const getIntranetUsersList = async()=>{ + const response = await fetch(`${process.env.REACT_APP_API_URL}/intranet-users-list`); + if (!response.ok) { + throw new Error('Failed to get User list data'); + } + const UserListData = await response.json() + return UserListData; +} + +export const useGetIntranetUsersData = () => { + return useQuery( + { + queryKey: ['IntranetUsers-list'], + queryFn: () => getIntranetUsersList(), + } + ); +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 215f095..3689aa3 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -8,6 +8,7 @@ import Dashboard from './components/Dashboard'; import Projects from './components/projects/Projects'; import { ReactQueryDevtools} from 'react-query/devtools' import ManageUsers from './components/manage_users/ManageUsers'; +import IntranetUsers from './components/intranet_users/IntranetUsers'; function App() { const queryClient = new QueryClient(); @@ -20,6 +21,7 @@ function App() { } /> } /> } /> + } /> diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 0f63c8a..dec4756 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -106,6 +106,10 @@ function Header() { MANAGE USERS + + INTRANET USERS + @@ -165,6 +169,15 @@ function Header() { > MANAGE USERS + diff --git a/src/components/intranet_users/IntranetUsers.tsx b/src/components/intranet_users/IntranetUsers.tsx new file mode 100644 index 0000000..401c111 --- /dev/null +++ b/src/components/intranet_users/IntranetUsers.tsx @@ -0,0 +1,208 @@ +import React, { ChangeEvent, useEffect, useState } from "react"; +import { useGetIntranetUsersData } from "../../APIs/IntranetUsersAPIs/getUsersList"; +import { + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + tableRowClasses, + Paper, + Button, + IconButton, + TextField, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + TablePagination, +} from '@mui/material'; +import DeleteIcon from '@mui/icons-material/Delete'; +import EditIcon from '@mui/icons-material/Edit'; +import AddIcon from '@mui/icons-material/Add'; +import { postNewManageUsersData } from "../../APIs/ManageUsersAPIs/postAddUser"; + + +const StyledTextField = (props:any) => ( + + ); + + interface Row { + username: string; + role: string; + active:any; + } + +export default function IntranetUsers(){ + const [manageUsersData,setManageUsersData] = useState() + const { data: manageUsersResponse, isLoading, isError } = useGetIntranetUsersData(); + const [data, setData] = useState([]); + const [open, setOpen] = useState(false); + const [selectedRow, setSelectedRow] = useState(); + const [newRow, setNewRow] = useState(); + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(10); + + useEffect(()=>{ + if (!open){ + setSelectedRow({username: '', role: '', active: '' }); + setNewRow({username: '', role: '', active: '' }); + } + },[open]) + useEffect(() => { + if (selectedRow){ + postNewManageUsersData(selectedRow); + } + },[data]) + + const handleChangePage = (event:any, newPage:any) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event:any) => { + setRowsPerPage(+event.target.value); + setPage(0); + }; + + const handleEdit = (row: Row) => { + setSelectedRow({...row}); + setOpen(true); + }; + + const handleSave = () => { + // if (selectedRow.id) { + // const updatedData = data.map((row) => (row.id === selectedRow.id ? selectedRow : row)); + // setData(updatedData); + // } else { + const id = data.length + 1; + setData([...data, { ...selectedRow, id }]); + // } + + setOpen(false); + }; + + const handleClose = () => { + setOpen(false); + setSelectedRow({username: '', role: '', active: '' }); + setNewRow({username: '', role: '', active: '' }); + }; + + const handleChange = (e: ChangeEvent) => { + const { name, value } = e.target; + if (selectedRow) { + // Editing existing row + setSelectedRow({ ...selectedRow, [name]: value }); + } else { + // Adding a new row + setNewRow({ ...newRow, [name]: value }); + } + }; + + const handleOpen = () => { + setOpen(true); + }; + console.log(selectedRow,"sdfhhgfdg") + + return( + + + + + + + + + + Name + Role + Active + + + + {manageUsersResponse && manageUsersResponse.map((row:any) => ( + + + handleEdit(row)} aria-label="edit"> + + + {/* handleDelete(row.id)} aria-label="delete"> + + */} + + {row.username} + {row.role} + {row.active==1? + Active + : + Inactive} + + ))} + +
+
+ + + {selectedRow && selectedRow.id ? 'Edit Row' : 'Add New Row'} + + + + + + + + + + +
+
+ ) +} \ No newline at end of file diff --git a/src/components/manage_users/ManageUsers.tsx b/src/components/manage_users/ManageUsers.tsx index 7f178e5..718a324 100644 --- a/src/components/manage_users/ManageUsers.tsx +++ b/src/components/manage_users/ManageUsers.tsx @@ -22,7 +22,6 @@ import DeleteIcon from '@mui/icons-material/Delete'; import EditIcon from '@mui/icons-material/Edit'; import AddIcon from '@mui/icons-material/Add'; import { postNewManageUsersData } from "../../APIs/ManageUsersAPIs/postAddUser"; -import { useMutation } from '@tanstack/react-query'; const StyledTextField = (props:any) => (