@@ -137,6 +137,14 @@ function Header(props) { | |||
<li> | |||
<Link className="emailTemplate" to='/emailTemplate'><Typography style={{ opacity: 0.9 }} variant={"pnspsHeaderTitle"} sx={{ ml: 1 }}>Email Template</Typography></Link> | |||
</li> | |||
<li> | |||
<Link className="client" ><Typography style={{ opacity: 0.9 }} variant={"pnspsHeaderTitle"} sx={{ ml: 2 }}>Setting</Typography><KeyboardArrowDownIcon sx={{ fontSize: '1.0rem' }} /></Link> | |||
<ul className='dropdown'> | |||
<li> | |||
<Link className="userProfileGld" to='/user/profile'><Typography style={{ opacity: 0.9 }} variant={"pnspsHeaderTitle"} sx={{ ml: 2, mt: 1, mb: 1 }}>Users Profile</Typography></Link> | |||
</li> | |||
</ul> | |||
</li> | |||
<li> | |||
<Link className="logout" onClick={handleLogout}><Typography variant={"pnspsHeaderTitle"} sx={{ ml: 2 }}>Logout</Typography></Link> | |||
</li> | |||
@@ -4,10 +4,10 @@ import { | |||
} from "@mui/x-data-grid"; | |||
import {useEffect, useState} from "react"; | |||
import axios from "axios"; | |||
import {apiPath} from "../../../auth/utils"; | |||
import {apiPath} from "auth/utils"; | |||
//import LoadingComponent from "../extra-pages/LoadingComponent"; | |||
import * as React from "react"; | |||
import {GET_AUTH_LIST} from "../../../utils/ApiPathConst"; | |||
import {GET_AUTH_LIST} from "utils/ApiPathConst"; | |||
import Loadable from 'components/Loadable'; | |||
import { lazy } from 'react'; | |||
@@ -23,6 +23,7 @@ const UserGroupCard = ({isCollectData, updateUserGroupList,userData,isNewRecord} | |||
useEffect(() => { | |||
//if user data from parent are not null | |||
if (Object.keys(userData).length > 0 && userData !== undefined) { | |||
// console.log(userData.groupIds) | |||
setCurrentUserData(userData.data); | |||
setSelectedRow(userData.groupIds); | |||
} | |||
@@ -4,9 +4,9 @@ import { | |||
} from "@mui/x-data-grid"; | |||
import {useEffect, useState} from "react"; | |||
import axios from "axios"; | |||
import {apiPath} from "../../../auth/utils"; | |||
import {apiPath} from "auth/utils"; | |||
import * as React from "react"; | |||
import {GET_GROUP_COMBO_PATH} from "../../../utils/ApiPathConst"; | |||
import {GET_GROUP_COMBO_PATH} from "utils/ApiPathConst"; | |||
import Loadable from 'components/Loadable'; | |||
import { lazy } from 'react'; | |||
const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); | |||
@@ -41,7 +41,9 @@ export default function UserGroupTable({setSelectedRow, userGroup,isNewRecord}) | |||
axios.get(`${apiPath}${GET_GROUP_COMBO_PATH}`) | |||
.then((response) => { | |||
if (response.status === 200) { | |||
// console.log(userGroup) | |||
setGroupData(response.data.records); | |||
setCurrentSelectedRow(userGroup); | |||
} | |||
}) | |||
.catch(error => { | |||
@@ -85,7 +87,7 @@ export default function UserGroupTable({setSelectedRow, userGroup,isNewRecord}) | |||
checkboxSelection | |||
rowSelectionModel={currentSelectedRow} | |||
onRowSelectionModelChange={(ids) => { | |||
console.log(ids); | |||
// console.log(ids); | |||
setSelectedRow(ids); | |||
setCurrentSelectedRow(ids); | |||
}} | |||
@@ -10,7 +10,7 @@ import { useEffect, useState } from "react"; | |||
import * as React from "react"; | |||
import axios from "axios"; | |||
import { useNavigate, useParams } from "react-router-dom"; | |||
import { GLD_USER_PATH, DELETE_USER, POST_ADMIN_USER_REGISTER } from "../../../utils/ApiPathConst"; | |||
import { GLD_USER_PATH, DELETE_USER, POST_ADMIN_USER_REGISTER } from "utils/ApiPathConst"; | |||
import Loadable from 'components/Loadable'; | |||
import { lazy } from 'react'; | |||
@@ -23,7 +23,7 @@ import { | |||
getDeletedRecordWithRefList, | |||
notifyDeleteSuccess, | |||
notifySaveSuccess, | |||
} from "../../../utils/CommonFunction"; | |||
} from "utils/CommonFunction"; | |||
import ForwardIcon from '@mui/icons-material/Forward'; | |||
import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
@@ -0,0 +1,160 @@ | |||
// material-ui | |||
import { | |||
FormControl, | |||
// IconButton, | |||
Grid, | |||
// InputAdornment, | |||
Typography, FormLabel, | |||
OutlinedInput, | |||
} from '@mui/material'; | |||
import MainCard from "components/MainCard"; | |||
import * as React from "react"; | |||
import {useEffect, useState} from "react"; | |||
import Loadable from 'components/Loadable'; | |||
import { lazy } from 'react'; | |||
const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const UserInformationCard = ({userData}) => { | |||
const [currentUserData, setCurrentUserData] = React.useState({}); | |||
// const [locked, setLocked] = useState(false); | |||
const [onReady, setOnReady] = useState(false); | |||
useEffect(() => { | |||
//if user data from parent are not null | |||
if (Object.keys(userData).length > 0 && userData !== undefined) { | |||
setCurrentUserData(userData.data); | |||
} | |||
}, [userData]); | |||
useEffect(() => { | |||
//if state data are ready and assign to different field | |||
if (Object.keys(userData).length > 0 &¤tUserData !== undefined&¤tUserData.id!==undefined) { | |||
console.log(currentUserData) | |||
// setLocked(currentUserData.locked); | |||
setOnReady(true); | |||
} | |||
}, [currentUserData]); | |||
return ( | |||
!onReady ? | |||
<LoadingComponent/> | |||
: | |||
<MainCard elevation={0} | |||
border={false} | |||
content={false} | |||
> | |||
<Typography variant="h5" sx={{mt: 3, ml: 3, mr: 3, borderBottom: "1px solid black"}}> | |||
Information | |||
</Typography> | |||
<form> | |||
<Grid container> | |||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 3, mt:3}}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={4} s={4} md={4} lg={4} | |||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||
<FormLabel required>Username:</FormLabel> | |||
</Grid> | |||
<Grid item xs={7} s={7} md={7} lg={6}> | |||
<FormControl variant="outlined" fullWidth required> | |||
<OutlinedInput | |||
required | |||
fullWidth | |||
size="small" | |||
// {...register("username", | |||
// { | |||
// })} | |||
id='username' | |||
disabled={true} | |||
value={currentUserData.username} | |||
/> | |||
</FormControl> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 3}}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={4} s={4} md={4} lg={4} | |||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||
<FormLabel required >Full Name:</FormLabel> | |||
</Grid> | |||
<Grid item xs={7} s={7} md={7} lg={6}> | |||
<FormControl variant="outlined" fullWidth required> | |||
<OutlinedInput | |||
required | |||
fullWidth | |||
size="small" | |||
value= {currentUserData.enName} | |||
disabled={true} | |||
// {...register("enName", | |||
// { | |||
// })} | |||
id='enName' | |||
/> | |||
</FormControl> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 3}}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={4} s={4} md={4} lg={4} | |||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||
<FormLabel>Post:</FormLabel> | |||
</Grid> | |||
<Grid item xs={7} s={7} md={7} lg={6}> | |||
<FormControl variant="outlined" fullWidth required> | |||
<OutlinedInput | |||
fullWidth | |||
size="small" | |||
value= {currentUserData.post} | |||
disabled={true} | |||
// {...register("post", | |||
// { | |||
// })} | |||
id='post' | |||
/> | |||
</FormControl> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 3}}> | |||
<Grid container alignItems={"center"}> | |||
<Grid item xs={4} s={4} md={4} lg={4} | |||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||
<FormLabel required>Email:</FormLabel> | |||
</Grid> | |||
<Grid item xs={7} s={7} md={7} lg={6}> | |||
<FormControl variant="outlined" fullWidth required> | |||
<OutlinedInput | |||
fullWidth | |||
size="small" | |||
value={currentUserData.emailAddress} | |||
disabled={true} | |||
// {...register("emailAddress", | |||
// { | |||
// })} | |||
id='emailAddress' | |||
/> | |||
</FormControl> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
</form> | |||
</MainCard> | |||
); | |||
}; | |||
export default UserInformationCard; |
@@ -0,0 +1,153 @@ | |||
// material-ui | |||
import { | |||
Button, | |||
Grid, | |||
Typography, | |||
Stack, | |||
Box, | |||
} from '@mui/material'; | |||
import { useEffect, useState } from "react"; | |||
import * as React from "react"; | |||
import axios from "axios"; | |||
import { useNavigate, | |||
// useParams | |||
} from "react-router-dom"; | |||
import { GLD_USER_PATH, | |||
// DELETE_USER, | |||
// POST_ADMIN_USER_REGISTER | |||
} from "utils/ApiPathConst"; | |||
import Loadable from 'components/Loadable'; | |||
import { lazy } from 'react'; | |||
const UserInformationCard = Loadable(lazy(() => import('./UserInformationCard'))); | |||
const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); | |||
// const UserGroupCard = Loadable(lazy(() => import('./UserGroupCard'))); | |||
// const UserAuthorityCard = Loadable(lazy(() => import('./UserAuthorityCard'))); | |||
import { | |||
// GeneralConfirmWindow, | |||
// getDeletedRecordWithRefList, | |||
// notifyDeleteSuccess, | |||
// notifySaveSuccess, | |||
} from "utils/CommonFunction"; | |||
import ForwardIcon from '@mui/icons-material/Forward'; | |||
import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
import { | |||
getUserId, | |||
} from "utils/Utils"; | |||
const BackgroundHead = { | |||
backgroundImage: `url(${titleBackgroundImg})`, | |||
width: '100%', | |||
height: '100%', | |||
backgroundSize: 'contain', | |||
backgroundRepeat: 'no-repeat', | |||
backgroundColor: '#0C489E', | |||
backgroundPosition: 'right' | |||
} | |||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
const UserMaintainPage = () => { | |||
// const params = useParams(); | |||
const navigate = useNavigate(); | |||
const [userData, setUserData] = React.useState({}); | |||
const [onReady, setOnReady] = useState(false); | |||
// const [isCollectData, setIsCollectData] = useState(false); | |||
// const [editedCustomerData, setEditedCustomerData] = useState({}); | |||
// const [userConfirm, setUserConfirm] = useState(false); | |||
// const [isNewRecord, setIsNewRecord] = useState(false); | |||
// const [refUserData, setRefUserData] = React.useState({}); | |||
// function updateUserObject(userData) { | |||
// setEditedCustomerData(userData); | |||
// } | |||
// const submitData = () => { | |||
// setUserConfirm(true); | |||
// setIsCollectData(!isCollectData); | |||
// } | |||
// ==============================|| DELETE WINDOW RELATED ||============================== // | |||
// const [isWindowOpen, setIsWindowOpen] = useState(false); | |||
// const handleClose = () => { | |||
// setIsWindowOpen(false); | |||
// }; | |||
// const handleDeleteClick = () => { | |||
// setIsWindowOpen(true); | |||
// }; | |||
// function deleteData() { | |||
// axios.delete(`${DELETE_USER}/${params.id}`, | |||
// ) | |||
// .then((response) => { | |||
// if (response.status === 204) { | |||
// notifyDeleteSuccess(); | |||
// setIsWindowOpen(false); | |||
// navigate('/userSearchview'); | |||
// } | |||
// }) | |||
// .catch(error => { | |||
// console.log(error); | |||
// return false; | |||
// }); | |||
// } | |||
// ==============================|| DELETE WINDOW RELATED ||============================== // | |||
useEffect(() => { | |||
axios.get(`${GLD_USER_PATH}/${getUserId()}`) | |||
.then((response) => { | |||
if (response.status === 200) { | |||
setUserData(response.data); | |||
} | |||
}) | |||
.catch(error => { | |||
console.log(error); | |||
return false; | |||
}); | |||
}, []); | |||
useEffect(() => { | |||
if (Object.keys(userData).length > 0 && userData !== undefined) { | |||
setOnReady(true); | |||
} | |||
}, [userData]); | |||
return ( | |||
!onReady ? | |||
<LoadingComponent /> | |||
: | |||
<Grid container sx={{ backgroundColor: 'backgroundColor.default' }}> | |||
<Grid item xs={12}> | |||
<div style={BackgroundHead}> | |||
<Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center"> | |||
<Typography ml={15} color='#FFF' variant="h4">User Profile</Typography> | |||
</Stack> | |||
</div> | |||
</Grid> | |||
<Grid item xs={12}> | |||
<Button title="Back" sx={{ ml: 3.5, mt: 2 }} style={{ border: '2px solid' }} variant="outlined" onClick={() => { navigate("/userSearchview") }}> | |||
<ForwardIcon style={{ height: 30, width: 50, transform: "rotate(180deg)" }} /> | |||
</Button> | |||
</Grid> | |||
{/*col 1*/} | |||
<Grid item xs={12}> | |||
<Grid container> | |||
<Grid item xs={12} md={12} lg={12}> | |||
<Box xs={12} ml={4} mt={3} sx={{ p: 1, borderRadius: '10px', backgroundColor: '#fff' }}> | |||
<UserInformationCard | |||
userData={userData} | |||
/> | |||
</Box> | |||
</Grid> | |||
</Grid> | |||
</Grid> | |||
{/*col 2*/} | |||
</Grid> | |||
); | |||
}; | |||
export default UserMaintainPage; |
@@ -18,6 +18,8 @@ const DemandNote_Create = Loadable(lazy(() => import('pages/DemandNote/Create')) | |||
const DemandNote_Search = Loadable(lazy(() => import('pages/DemandNote/Search'))); | |||
const DemandNote_Details = Loadable(lazy(() => import('pages/DemandNote/Details'))); | |||
const GFMIS_Search = Loadable(lazy(() => import('pages/GFMIS'))); | |||
const UserMaintainPage = Loadable(lazy(() => import('pages/User/GLDUserProfile'))); | |||
// ==============================|| MAIN ROUTING ||============================== // | |||
const GLDUserRoutes = { | |||
@@ -78,7 +80,11 @@ const GLDUserRoutes = { | |||
{ | |||
path: '/gfmis/search', | |||
element: <GFMIS_Search/> | |||
} | |||
}, | |||
{ | |||
path: '/user/profile', | |||
element: <UserMaintainPage /> | |||
}, | |||
] | |||
}, | |||
] | |||