@@ -26,27 +26,25 @@ const AutoLogoutProvider = ({ children }) => { | |||||
const userData = getUserData(); | const userData = getUserData(); | ||||
const checked = localStorage.getItem("checkPasswordExpired"); | const checked = localStorage.getItem("checkPasswordExpired"); | ||||
if(userData !== null){ | if(userData !== null){ | ||||
if(!userData.lotusNotesUser){ | |||||
//system user | |||||
if(checked === "false"){ | |||||
axios.get(`${apiPath}${GET_USER_PASSWORD_DURATION}`,{ | |||||
params:{ | |||||
id: userData.id | |||||
//system user | |||||
if(checked === "false"){ | |||||
axios.get(`${apiPath}${GET_USER_PASSWORD_DURATION}`,{ | |||||
params:{ | |||||
id: userData.id | |||||
} | |||||
}) | |||||
.then((response) => { | |||||
if (response.status === 200) { | |||||
setForceChangePassword(response.data.expired); | |||||
if(!response.data.expired){ | |||||
localStorage.setItem("checkPasswordExpired",true); | |||||
} | |||||
} | } | ||||
}) | }) | ||||
.then((response) => { | |||||
if (response.status === 200) { | |||||
setForceChangePassword(response.data.expired); | |||||
if(!response.data.expired){ | |||||
localStorage.setItem("checkPasswordExpired",true); | |||||
} | |||||
} | |||||
}) | |||||
.catch(error => { | |||||
console.log(error); | |||||
return false; | |||||
}); | |||||
} | |||||
.catch(error => { | |||||
console.log(error); | |||||
return false; | |||||
}); | |||||
} | } | ||||
} | } | ||||
}, []); | }, []); | ||||
@@ -29,6 +29,7 @@ import {parseString} from "xml2js"; | |||||
import {useParams} from "react-router-dom"; | import {useParams} from "react-router-dom"; | ||||
import {isObjEmpty} from "../../utils/Utils"; | import {isObjEmpty} from "../../utils/Utils"; | ||||
import {GENERAL_RED_COLOR} from "../../themes/colorConst"; | import {GENERAL_RED_COLOR} from "../../themes/colorConst"; | ||||
import {USER_GROUP_COMBO} from "../../utils/ComboConst"; | |||||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
@@ -37,181 +38,78 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
requestError}) => { | requestError}) => { | ||||
const params = useParams(); | const params = useParams(); | ||||
const [currentUserData, setCurrentUserData] = React.useState({}); | const [currentUserData, setCurrentUserData] = React.useState({}); | ||||
const [subDivision, setSubDivision] = useState(null); | |||||
const [userGroup, setUserGroup] = useState(null); | |||||
const [locked, setLocked] = useState(false); | const [locked, setLocked] = useState(false); | ||||
const [isLotusNoteUser, setIsLotusNoteUser] = useState(false); | |||||
const [lotusNoteUserList, setLotusNoteUserList] = useState([]) | |||||
const [selectedLotusUser, setSelectedLotusUser] = useState(null); | |||||
const [receiveReminder, setReceiveReminder] = useState(false); | |||||
const [subDivisionList, setSubDivisionList] = useState([]); | |||||
const [userGroupList, setUserGroupList] = useState([]); | |||||
const [showPassword, setShowPassword] = React.useState(false); | const [showPassword, setShowPassword] = React.useState(false); | ||||
const [onReady, setOnReady] = useState(false); | const [onReady, setOnReady] = useState(false); | ||||
const {register, getValues, setValue} = useForm() | const {register, getValues, setValue} = useForm() | ||||
const [errors, setErrors] = useState({}); | const [errors, setErrors] = useState({}); | ||||
const [tempLotusDetail, setTempLotusDetail] = useState(null); | |||||
const handleClickShowPassword = () => setShowPassword((show) => !show); | const handleClickShowPassword = () => setShowPassword((show) => !show); | ||||
const handleMouseDownPassword = () => setShowPassword(!showPassword); | const handleMouseDownPassword = () => setShowPassword(!showPassword); | ||||
const handleReceiveSwitchToggle = () => { | |||||
setReceiveReminder(!receiveReminder); | |||||
}; | |||||
const handleLockSwitchToggle = () => { | const handleLockSwitchToggle = () => { | ||||
setLocked(!locked); | setLocked(!locked); | ||||
}; | }; | ||||
const handleLocationCodeChange = (event, value) => { | |||||
if (value.length >2 && !value.includes("(")) { | |||||
fetchLotusUserList(value); | |||||
} else { | |||||
setLotusNoteUserList(lotusNoteUserList); | |||||
} | |||||
}; | |||||
// Function to fetch user name options based on locationCode | |||||
const fetchLotusUserListDetail = async (input) => { | |||||
try { | |||||
axios.get(`${apiPath}${GET_LDAP_USER_LIST}`,{ | |||||
params:{ | |||||
"EMSDlotus": input, | |||||
} | |||||
}) | |||||
.then((response) => { | |||||
if (response.status === 200) { | |||||
let xml = response.data; | |||||
parseString(xml, function (err, result) { | |||||
const tempRecordList = convertXmlToObject(result.RECORDS.RECORD); | |||||
const tempRecord = getObjectByValueName(tempRecordList,"EMSDlotus", input) | |||||
setTempLotusDetail(tempRecord); | |||||
}); | |||||
} | |||||
}) | |||||
.catch(error => { | |||||
console.log(error); | |||||
return false; | |||||
}); | |||||
} catch (error) { | |||||
console.error('Error fetching user name options:', error); | |||||
} | |||||
}; | |||||
const fetchLotusUserList = async (input) => { | |||||
try { | |||||
axios.get(`${apiPath}${GET_LDAP_USER_COMBO}`,{ | |||||
params:{ | |||||
"username": input, | |||||
} | |||||
}) | |||||
.then((response) => { | |||||
if (response.status === 200) { | |||||
setLotusNoteUserList(response.data.records); | |||||
} | |||||
}) | |||||
.catch(error => { | |||||
console.log(error); | |||||
return false; | |||||
}); | |||||
} catch (error) { | |||||
console.error('Error fetching user name options:', error); | |||||
} | |||||
}; | |||||
// const validateEmail = (email) => { | |||||
// // Regular expression for email validation | |||||
// const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; | |||||
// return emailRegex.test(email); | |||||
// }; | |||||
useEffect(() => { | useEffect(() => { | ||||
if(!isObjEmpty(selectedLotusUser)){ | |||||
//set basic info | |||||
if(isNewRecord){ | |||||
setValue('username', selectedLotusUser.label); | |||||
} | |||||
setValue('email', selectedLotusUser.mail); | |||||
fetchLotusUserListDetail(selectedLotusUser.label); | |||||
} | |||||
else{ | |||||
if(isNewRecord){ | |||||
setValue('username', null); | |||||
setValue('post', null); | |||||
setValue('fullname',null); | |||||
setValue('email', null); | |||||
setValue("phone1", null); | |||||
} | |||||
} | |||||
}, [selectedLotusUser]); | |||||
useEffect(()=>{ | |||||
if(!isObjEmpty(tempLotusDetail)){ | |||||
setValue('post',tempLotusDetail.EMSDtitle); | |||||
setValue('fullname',tempLotusDetail.EMSDlastname + " " + tempLotusDetail.EMSDfirstname); | |||||
setValue("phone1", tempLotusDetail.EMSDofftel.substring(0,8)); | |||||
} | |||||
else if(isNewRecord){ | |||||
setValue('post',""); | |||||
setValue('fullname',""); | |||||
setValue("phone1",""); | |||||
} | |||||
},[tempLotusDetail]); | |||||
useEffect(() => { | |||||
axios.get(`${apiPath}${GET_SUB_DIVISION_COMBO_LIST}`) | |||||
.then((response) => { | |||||
if (response.status === 200) { | |||||
setSubDivisionList(response.data.records); | |||||
} | |||||
}) | |||||
.catch(error => { | |||||
console.log(error); | |||||
return false; | |||||
}); | |||||
// axios.get(`${apiPath}${GET_USER_GROUP_COMBO_LIST}`) | |||||
// .then((response) => { | |||||
// if (response.status === 200) { | |||||
// setSubDivisionList(response.data.records); | |||||
// } | |||||
// }) | |||||
// .catch(error => { | |||||
// console.log(error); | |||||
// return false; | |||||
// }); | |||||
}, []); | }, []); | ||||
useEffect(() => { | useEffect(() => { | ||||
setErrors(requestError); | setErrors(requestError); | ||||
}, [requestError]); | }, [requestError]); | ||||
useEffect(() => { | |||||
if(isNewRecord){ | |||||
setValue("password", null); | |||||
setValue("username", null); | |||||
} | |||||
}, [isLotusNoteUser]); | |||||
useEffect(() => { | useEffect(() => { | ||||
//if user data from parent are not null | //if user data from parent are not null | ||||
if (Object.keys(userData).length > 0 && userData !== undefined) { | if (Object.keys(userData).length > 0 && userData !== undefined) { | ||||
setIsLotusNoteUser(userData.data.lotusNotesUser); | |||||
setCurrentUserData(userData.data); | setCurrentUserData(userData.data); | ||||
} | } | ||||
}, [userData]); | }, [userData]); | ||||
useEffect(() => { | useEffect(() => { | ||||
//if state data are ready and assign to different field | //if state data are ready and assign to different field | ||||
if (Object.keys(currentUserData).length > 0 &¤tUserData !== undefined) { | |||||
if (Object.keys(currentUserData).length > 0 && currentUserData !== undefined) { | |||||
setLocked(currentUserData.locked); | setLocked(currentUserData.locked); | ||||
setReceiveReminder(currentUserData.reminderFlag); | |||||
setSubDivision(getObjectById(subDivisionList, currentUserData.subDivisionId)); | |||||
setUserGroup(USER_GROUP_COMBO.find(item => item.id == userData.groupId)); | |||||
setOnReady(true); | setOnReady(true); | ||||
} | } | ||||
else if(isNewRecord){ | else if(isNewRecord){ | ||||
setLocked(false); | setLocked(false); | ||||
setOnReady(true); | setOnReady(true); | ||||
} | } | ||||
}, [currentUserData,subDivisionList]); | |||||
}, [currentUserData]); | |||||
useEffect(() => { | useEffect(() => { | ||||
//upload latest data to parent | //upload latest data to parent | ||||
if(isCollectData){ | if(isCollectData){ | ||||
const values = getValues(); | |||||
let submitUserGroupId = userGroup?.key; | |||||
if (userGroup?.key == userData.groupId) { // User Group is not updated | |||||
submitUserGroupId = 0; | |||||
} | |||||
const values = { | |||||
...getValues(), | |||||
userGroupId:submitUserGroupId | |||||
}; | |||||
const formErrors = {}; | const formErrors = {}; | ||||
if (isStringEmptyAfterTrim(values.username) ) { | if (isStringEmptyAfterTrim(values.username) ) { | ||||
formErrors.username = 'User Name is required'; | formErrors.username = 'User Name is required'; | ||||
} | } | ||||
if (isStringEmptyAfterTrim(values.password) && !isLotusNoteUser && isNewRecord){ | |||||
if (isStringEmptyAfterTrim(values.password) && isNewRecord){ | |||||
formErrors.password = "Password is required" | formErrors.password = "Password is required" | ||||
} | } | ||||
@@ -219,18 +117,17 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
formErrors.fullname = 'Full Name is required'; | formErrors.fullname = 'Full Name is required'; | ||||
} | } | ||||
if(isStringEmptyAfterTrim(values.email)){ | |||||
formErrors.email = 'Email is required'; | |||||
if (userGroup == null) { | |||||
formErrors.userGroup = 'User Group is required'; | |||||
} | } | ||||
// if(isStringEmptyAfterTrim(values.email)){ | |||||
// formErrors.email = 'Email is required'; | |||||
// } | |||||
// else if(!validateEmail(values.email)){ | // else if(!validateEmail(values.email)){ | ||||
// formErrors.email = 'Invalid Email'; | // formErrors.email = 'Invalid Email'; | ||||
// } | // } | ||||
if(subDivision === null){ | |||||
formErrors.subDivision = 'Sub-Division is required'; | |||||
} | |||||
setErrors(formErrors); | setErrors(formErrors); | ||||
if (Object.keys(formErrors).length === 0) { | if (Object.keys(formErrors).length === 0) { | ||||
@@ -253,11 +150,7 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
else if(!response.data.isTaken){ | else if(!response.data.isTaken){ | ||||
const objectData ={ | const objectData ={ | ||||
...values, | ...values, | ||||
lotusNotesUser: isLotusNoteUser ? true : selectedLotusUser !== null, | |||||
selectedLotusUser: (isLotusNoteUser && selectedLotusUser !== null)? selectedLotusUser.account : null, | |||||
subDivisionId: subDivision !== null ? subDivision.id : null, | |||||
locked: locked, | locked: locked, | ||||
reminderFlag: receiveReminder, | |||||
} | } | ||||
updateUserObject(objectData); | updateUserObject(objectData); | ||||
} | } | ||||
@@ -282,63 +175,15 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
: | : | ||||
<MainCard elevation={0} | <MainCard elevation={0} | ||||
content={false} | content={false} | ||||
sx={{height:'77.5vh'}} | |||||
// sx={{height:'77.5vh'}} | |||||
> | > | ||||
<Typography variant="h5" sx={{mt: 1.5, ml: 3, mb: 1}}> | <Typography variant="h5" sx={{mt: 1.5, ml: 3, mb: 1}}> | ||||
Information | Information | ||||
</Typography> | </Typography> | ||||
<form> | <form> | ||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb:1}}> | |||||
<Grid container alignItems={"center"}> | |||||
<Grid item xs={4} s={4} md={4} lg={4} | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
<Typography variant="lionerSize" component="span"> | |||||
Lotus Note User: | |||||
</Typography> | |||||
</Grid> | |||||
<Grid item xs={1} s={1} md={1} lg={1}> | |||||
<Checkbox | |||||
checked={isLotusNoteUser} | |||||
onChange={(event) => setIsLotusNoteUser(event.target.checked)} | |||||
name="isLotusNoteUser" | |||||
color="primary" | |||||
size="medium" | |||||
disabled={!isNewRecord} | |||||
/> | |||||
</Grid> | |||||
<Grid item xs={6} s={6} md={6} lg={5}> | |||||
<Autocomplete | |||||
disablePortal | |||||
id="lotus-note-combo" | |||||
value={selectedLotusUser === null ? null : selectedLotusUser} | |||||
options={lotusNoteUserList} | |||||
disabled={!isLotusNoteUser || !isNewRecord} | |||||
size="small" | |||||
onInputChange={handleLocationCodeChange} | |||||
onChange={(event, newValue) => { | |||||
if(lotusNoteUserList.length >0){ | |||||
if(newValue !== null){ | |||||
if(getComboValueByLabel(lotusNoteUserList, newValue.label) !== null){ | |||||
setSelectedLotusUser(newValue); | |||||
} | |||||
} | |||||
else{ | |||||
setSelectedLotusUser(null); | |||||
} | |||||
} | |||||
}} | |||||
isOptionEqualToValue={isOptionEqualToValue} | |||||
renderInput={(params) => <TextField | |||||
{...params} | |||||
label={"Search LN User"} | |||||
/>} | |||||
/> | |||||
</Grid> | |||||
</Grid> | |||||
</Grid> | |||||
{/* <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb:1}}> | |||||
</Grid> */} | |||||
<Grid container> | <Grid container> | ||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | ||||
@@ -362,9 +207,9 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
value: currentUserData.username, | value: currentUserData.username, | ||||
})} | })} | ||||
id='username' | id='username' | ||||
InputProps={{ | |||||
readOnly: isLotusNoteUser, | |||||
}} | |||||
// InputProps={{ | |||||
// readOnly: {}, | |||||
// }} | |||||
disabled={!isNewRecord} | disabled={!isNewRecord} | ||||
error={!!errors.username} | error={!!errors.username} | ||||
helperText={errors.username} | helperText={errors.username} | ||||
@@ -383,17 +228,11 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | ||||
<Grid container alignItems={"center"}> | <Grid container alignItems={"center"}> | ||||
<Grid item xs={4} s={4} md={4} lg={4} | <Grid item xs={4} s={4} md={4} lg={4} | ||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
{isLotusNoteUser || !isNewRecord? | |||||
<Typography variant="lionerSize" component="span"> | |||||
Password: | |||||
</Typography> | |||||
: | |||||
<Typography variant="lionerSize" component="span"> | |||||
Password: | |||||
<Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | |||||
</Typography> | |||||
} | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
<Typography variant="lionerSize" component="span"> | |||||
Password: | |||||
{isNewRecord && (<Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography>)} | |||||
</Typography> | |||||
</Grid> | </Grid> | ||||
<Grid item xs={7} s={7} md={7} lg={6}> | <Grid item xs={7} s={7} md={7} lg={6}> | ||||
@@ -405,7 +244,7 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
{...register("password")} | {...register("password")} | ||||
id='password' | id='password' | ||||
type={showPassword ? 'text' : 'password'} | type={showPassword ? 'text' : 'password'} | ||||
disabled={isLotusNoteUser} | |||||
// disabled={} | |||||
error={!!errors.password} | error={!!errors.password} | ||||
autoComplete="off" | autoComplete="off" | ||||
inputProps={{ | inputProps={{ | ||||
@@ -480,30 +319,6 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
</Grid> | </Grid> | ||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | ||||
<Grid container alignItems={"center"}> | |||||
<Grid item xs={4} s={4} md={4} lg={4} | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
<Typography variant="lionerSize" component="span"> | |||||
Post: | |||||
</Typography> | |||||
</Grid> | |||||
<Grid item xs={7} s={7} md={7} lg={6}> | |||||
<FormControl fullWidth required> | |||||
<TextField | |||||
fullWidth | |||||
size="small" | |||||
autoComplete="off" | |||||
inputProps={{maxLength: 50}} | |||||
{...register("post", | |||||
{ | |||||
value: currentUserData.post, | |||||
})} | |||||
id='post' | |||||
/> | |||||
</FormControl> | |||||
</Grid> | |||||
</Grid> | |||||
</Grid> | </Grid> | ||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | ||||
@@ -511,7 +326,7 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
<Grid item xs={4} s={4} md={4} lg={4} | <Grid item xs={4} s={4} md={4} lg={4} | ||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | ||||
<Typography variant="lionerSize" component="span"> | <Typography variant="lionerSize" component="span"> | ||||
Sub-Division: | |||||
User Group: | |||||
<Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | <Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | ||||
</Typography> | </Typography> | ||||
</Grid> | </Grid> | ||||
@@ -519,19 +334,24 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
<Grid item xs={7} s={7} md={7} lg={6}> | <Grid item xs={7} s={7} md={7} lg={6}> | ||||
<Autocomplete | <Autocomplete | ||||
disablePortal | disablePortal | ||||
id="sub-division-combo" | |||||
// {...register("userGroup", | |||||
// { | |||||
// value: USER_GROUP_COMBO.find(item => item.id = currentUserData.groupId), | |||||
// })} | |||||
id="userGroup" | |||||
size="small" | size="small" | ||||
value={subDivision === null ? null : subDivision} | |||||
options={subDivisionList} | |||||
value= {userGroup} | |||||
// value={userGroup ?? null} | |||||
options={USER_GROUP_COMBO}//{userGroupList} | |||||
onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
setSubDivision(newValue); | |||||
setUserGroup(newValue); | |||||
}} | }} | ||||
renderInput={(params) => ( | renderInput={(params) => ( | ||||
<TextField | <TextField | ||||
{...params} | {...params} | ||||
//label={content2} | //label={content2} | ||||
error={!!errors.subDivision} | |||||
helperText={errors.subDivision} | |||||
error={!!errors.userGroup} | |||||
helperText={errors.userGroup} | |||||
InputProps={{ | InputProps={{ | ||||
...params.InputProps, | ...params.InputProps, | ||||
style: { | style: { | ||||
@@ -558,7 +378,7 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | ||||
<Typography variant="lionerSize" component="span"> | <Typography variant="lionerSize" component="span"> | ||||
Email: | Email: | ||||
<Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | |||||
{/* <Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> */} | |||||
</Typography> | </Typography> | ||||
</Grid> | </Grid> | ||||
@@ -610,38 +430,25 @@ const UserInformationCard = ({isCollectData, updateUserObject,userData, | |||||
</Grid> | </Grid> | ||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | <Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | ||||
<Grid container> | |||||
<Grid item xs={4} s={4} md={4} lg={4} | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
<Typography variant="lionerSize" component="span"> | |||||
Receive Reminder: | |||||
<Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | |||||
</Typography> | |||||
</Grid> | |||||
<Grid item xs={7} s={7} md={7} lg={6}> | |||||
<Switch checked={receiveReminder} onChange={handleReceiveSwitchToggle} /> | |||||
</Grid> | |||||
</Grid> | |||||
</Grid> | </Grid> | ||||
{!isNewRecord && ( | |||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | |||||
<Grid container> | |||||
<Grid item xs={4} s={4} md={4} lg={4} | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
<Typography variant="lionerSize" component="span"> | |||||
Locked: | |||||
{/* <Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> */} | |||||
</Typography> | |||||
</Grid> | |||||
<Grid item xs={12} s={12} md={12} lg={12} sx={{ml: 3, mr: 3, mb: 1}}> | |||||
<Grid container> | |||||
<Grid item xs={4} s={4} md={4} lg={4} | |||||
sx={{ml: 3, mr: 3, display: 'flex', alignItems: 'center'}}> | |||||
<Typography variant="lionerSize" component="span"> | |||||
Locked: | |||||
<Typography sx={{ color: GENERAL_RED_COLOR }} component="span">*</Typography> | |||||
</Typography> | |||||
</Grid> | |||||
<Grid item xs={7} s={7} md={7} lg={6}> | |||||
<Switch checked={locked} onChange={handleLockSwitchToggle} /> | |||||
</Grid> | |||||
<Grid item xs={7} s={7} md={7} lg={6}> | |||||
<Switch checked={locked} onChange={handleLockSwitchToggle} /> | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</Grid> | |||||
)} | |||||
</Grid> | </Grid> | ||||
</form> | </form> | ||||
@@ -37,7 +37,7 @@ const UserMaintainPage = () => { | |||||
const [userData, setUserData] = React.useState({}); | const [userData, setUserData] = React.useState({}); | ||||
const [onReady, setOnReady] = useState(false); | const [onReady, setOnReady] = useState(false); | ||||
const [isCollectData, setIsCollectData] = useState(false); | const [isCollectData, setIsCollectData] = useState(false); | ||||
const [editedCustomerData, setEditedCustomerData] = useState({}); | |||||
const [editedUserData, setEditedUserData] = useState({}); | |||||
const [userGroupData,setUserGroupData] = useState([]); | const [userGroupData,setUserGroupData] = useState([]); | ||||
const [userAuthData,setUserAuthData] = useState([]); | const [userAuthData,setUserAuthData] = useState([]); | ||||
const [userConfirm, setUserConfirm] = useState(false); | const [userConfirm, setUserConfirm] = useState(false); | ||||
@@ -45,7 +45,7 @@ const UserMaintainPage = () => { | |||||
const [requestError, setRequestError] = useState({}); | const [requestError, setRequestError] = useState({}); | ||||
function updateUserObject(userData) { | function updateUserObject(userData) { | ||||
setEditedCustomerData(userData); | |||||
setEditedUserData(userData); | |||||
} | } | ||||
function updateUserGroupList(userGroupData){ | function updateUserGroupList(userGroupData){ | ||||
@@ -96,7 +96,7 @@ const UserMaintainPage = () => { | |||||
// ==============================|| DELETE WINDOW RELATED ||============================== // | // ==============================|| DELETE WINDOW RELATED ||============================== // | ||||
useEffect(() => { | useEffect(() => { | ||||
if(params.id > 0 ){ | |||||
if(params.id > 0){ | |||||
axios.get(`${apiPath}${GET_USER_PATH}/${params.id}`) | axios.get(`${apiPath}${GET_USER_PATH}/${params.id}`) | ||||
.then((response) => { | .then((response) => { | ||||
if (response.status === 200) { | if (response.status === 200) { | ||||
@@ -146,22 +146,18 @@ const UserMaintainPage = () => { | |||||
axios.post(`${apiPath}${CREATE_USER_PATH}`, | axios.post(`${apiPath}${CREATE_USER_PATH}`, | ||||
{ | { | ||||
"id": parseInt(params.id), | "id": parseInt(params.id), | ||||
"fullname": editedCustomerData.fullname.trim(), | |||||
"name": editedCustomerData.username.trim(), | |||||
"locked": editedCustomerData.locked, | |||||
"lotusNotesUser": editedCustomerData.lotusNotesUser, | |||||
"selectedLotusUser": editedCustomerData.selectedLotusUser, | |||||
"username": editedCustomerData.username.trim(), | |||||
"password": editedCustomerData.lotusNotesUser? null : editedCustomerData.password, | |||||
"phone1": editedCustomerData.phone1 === null ? "" : editedCustomerData.phone1.trim(), | |||||
"post": editedCustomerData.post === null ? "" : editedCustomerData.post.trim(), | |||||
"email": editedCustomerData.email === null ? "": editedCustomerData.email.trim(), | |||||
"reminderFlag": editedCustomerData.reminderFlag, | |||||
"subDivisionId": editedCustomerData.subDivisionId, | |||||
"addGroupIds": userGroupData, | |||||
"removeGroupIds": deletedUserGroup, | |||||
"addAuthIds": userAuthData, | |||||
"removeAuthIds": deletedUserAuth, | |||||
"fullname": editedUserData.fullname.trim(), | |||||
"name": editedUserData.username.trim(), | |||||
"locked": editedUserData.locked, | |||||
"username": editedUserData.username.trim(), | |||||
"phone1": editedUserData.phone1 === null ? "" : editedUserData.phone1.trim(), | |||||
// "post": editedUserData.post === null ? "" : editedUserData.post.trim(), | |||||
"email": editedUserData.email === null ? "": editedUserData.email.trim(), | |||||
"userGroupId": editedUserData.userGroupId ?? null, | |||||
// "addGroupIds": userGroupData, | |||||
// "removeGroupIds": deletedUserGroup, | |||||
// "addAuthIds": userAuthData, | |||||
// "removeAuthIds": deletedUserAuth, | |||||
}, | }, | ||||
).then((response) => { | ).then((response) => { | ||||
if (response.status === 200) { | if (response.status === 200) { | ||||
@@ -190,7 +186,7 @@ const UserMaintainPage = () => { | |||||
} | } | ||||
setUserConfirm(false); | setUserConfirm(false); | ||||
setIsCollectData(false); | setIsCollectData(false); | ||||
}, [editedCustomerData]); | |||||
}, [editedUserData]); | |||||
return ( | return ( | ||||
!onReady ? | !onReady ? | ||||
@@ -202,7 +198,7 @@ const UserMaintainPage = () => { | |||||
<Typography variant="h5">{isNewRecord? "Create User" : "Maintain User"}</Typography> | <Typography variant="h5">{isNewRecord? "Create User" : "Maintain User"}</Typography> | ||||
</Grid> | </Grid> | ||||
{/*col 1*/} | {/*col 1*/} | ||||
<Grid item xs={12} md={12} lg={5}> | |||||
<Grid item xs={12} md={12}/* lg={5}*/> | |||||
<UserInformationCard | <UserInformationCard | ||||
updateUserObject={updateUserObject} | updateUserObject={updateUserObject} | ||||
userData={userData} | userData={userData} | ||||
@@ -214,7 +210,7 @@ const UserMaintainPage = () => { | |||||
/> | /> | ||||
</Grid> | </Grid> | ||||
{/*col 2*/} | {/*col 2*/} | ||||
<Grid item xs={12} md={12} lg={7}> | |||||
{/*<Grid item xs={12} md={12} lg={7}> | |||||
<Grid container> | <Grid container> | ||||
<Grid item xs={12} md={12} lg={12} > | <Grid item xs={12} md={12} lg={12} > | ||||
<UserGroupCard | <UserGroupCard | ||||
@@ -236,7 +232,7 @@ const UserMaintainPage = () => { | |||||
</Grid> | </Grid> | ||||
</Grid> | |||||
</Grid>*/} | |||||
{/*bottom button*/} | {/*bottom button*/} | ||||
<Grid item s={12} md={12} lg={12} sx={{mt:-1.5}} alignItems={"end"} justifyContent="center"> | <Grid item s={12} md={12} lg={12} sx={{mt:-1.5}} alignItems={"end"} justifyContent="center"> | ||||
@@ -262,25 +258,25 @@ const UserMaintainPage = () => { | |||||
Cancel | Cancel | ||||
</Button> | </Button> | ||||
</Grid> | </Grid> | ||||
<Grid item sx={{ml:{xs:1.5, md:1.5, lg:1.5}, mr:1.5}}> | |||||
<Button | |||||
variant="contained" | |||||
color="delete" | |||||
disabled={isNewRecord} | |||||
onClick={handleDeleteClick} | |||||
> | |||||
Delete | |||||
</Button> | |||||
<GeneralConfirmWindow | |||||
isWindowOpen={isWindowOpen} | |||||
title={"Attention"} | |||||
//content={`Confirm to delete User "${userData.data.username}" ?`} | |||||
content={"Are you sure to delete this user?"} | |||||
onNormalClose={handleClose} | |||||
onConfirmClose={deleteData} | |||||
/> | |||||
</Grid> | |||||
{!isNewRecord && ( | |||||
<Grid item sx={{ml:{xs:1.5, md:1.5, lg:1.5}, mr:1.5}}> | |||||
<Button | |||||
variant="contained" | |||||
color="delete" | |||||
onClick={handleDeleteClick} | |||||
> | |||||
Delete | |||||
</Button> | |||||
<GeneralConfirmWindow | |||||
isWindowOpen={isWindowOpen} | |||||
title={"Attention"} | |||||
//content={`Confirm to delete User "${userData.data.username}" ?`} | |||||
content={"Are you sure to delete this user?"} | |||||
onNormalClose={handleClose} | |||||
onConfirmClose={deleteData} | |||||
/> | |||||
</Grid> | |||||
)} | |||||
</Grid> | </Grid> | ||||
</ThemeProvider> | </ThemeProvider> | ||||
@@ -12,13 +12,12 @@ import {useEffect, useState} from "react"; | |||||
import Autocomplete from '@mui/material/Autocomplete'; | import Autocomplete from '@mui/material/Autocomplete'; | ||||
import Checkbox from "@mui/material/Checkbox"; | import Checkbox from "@mui/material/Checkbox"; | ||||
import * as React from "react"; | import * as React from "react"; | ||||
import axios from "axios"; | |||||
import {apiPath} from "../../auth/utils"; | import {apiPath} from "../../auth/utils"; | ||||
import {GET_SUB_DIVISION_COMBO_LIST} from "../../utils/ApiPathConst"; | |||||
// import {GET_USER_GROUP_COMBO_LIST} from "../../utils/ApiPathConst"; | |||||
import {useNavigate} from 'react-router-dom'; | import {useNavigate} from 'react-router-dom'; | ||||
import {ThemeProvider} from "@emotion/react"; | import {ThemeProvider} from "@emotion/react"; | ||||
import {LIONER_BUTTON_THEME} from "../../themes/colorConst"; | import {LIONER_BUTTON_THEME} from "../../themes/colorConst"; | ||||
import {USER_TYPE_COMBO} from "../../utils/ComboConst"; | |||||
import {USER_GROUP_COMBO} from "../../utils/ComboConst"; | |||||
import {CARD_MAX_WIDTH} from "../../themes/themeConst"; | import {CARD_MAX_WIDTH} from "../../themes/themeConst"; | ||||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
@@ -27,9 +26,9 @@ const UserSearchForm = ({applySearch}) => { | |||||
const navigate = useNavigate() | const navigate = useNavigate() | ||||
const [type, setType] = useState([]); | const [type, setType] = useState([]); | ||||
const [subDivision, setSubDivision] = useState(null); | |||||
const [userGroup, setUserGroup] = useState(null); | |||||
const [selectedUserType, setSelectedUserType] = useState(null); | const [selectedUserType, setSelectedUserType] = useState(null); | ||||
const [subDivisionList, setSubDivisionList] = useState([]); | |||||
const [userGroupList, setUserGroupList] = useState([]); | |||||
const [locked, setLocked] = useState(false); | const [locked, setLocked] = useState(false); | ||||
@@ -46,31 +45,31 @@ const UserSearchForm = ({applySearch}) => { | |||||
username: data.userName, | username: data.userName, | ||||
fullname: data.fullName, | fullname: data.fullName, | ||||
post: data.post, | post: data.post, | ||||
subDivisionId: subDivision !== null ? subDivision.id : null, | |||||
groupId: userGroup !== null ? userGroup.id : null, | |||||
email: data.email, | email: data.email, | ||||
phone: data.phone, | phone: data.phone, | ||||
isLotusNotesUser: selectedUserType === null ? null : selectedUserType.id === 1 ? null : selectedUserType.id === 2, | |||||
locked: locked, | locked: locked, | ||||
}; | }; | ||||
applySearch(temp); | applySearch(temp); | ||||
}; | }; | ||||
useEffect(() => { | useEffect(() => { | ||||
axios.get(`${apiPath}${GET_SUB_DIVISION_COMBO_LIST}`) | |||||
.then((response) => { | |||||
if (response.status === 200) { | |||||
setSubDivisionList(response.data.records); | |||||
} | |||||
}) | |||||
.catch(error => { | |||||
console.log(error); | |||||
return false; | |||||
}); | |||||
// axios.get(`${apiPath}${GET_USER_GROUP_COMBO_LIST}`) | |||||
// .then((response) => { | |||||
// if (response.status === 200) { | |||||
// setUserGroupList(response.data.records); | |||||
// } | |||||
// }) | |||||
// .catch(error => { | |||||
// console.log(error); | |||||
// return false; | |||||
// }); | |||||
}, []); | }, []); | ||||
function resetForm(){ | function resetForm(){ | ||||
setType([]); | setType([]); | ||||
setSubDivision(null); | |||||
setUserGroup(null); | |||||
setSelectedUserType(null); | setSelectedUserType(null); | ||||
setLocked(false); | setLocked(false); | ||||
reset(); | reset(); | ||||
@@ -120,29 +119,16 @@ const UserSearchForm = ({applySearch}) => { | |||||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5 }}> | <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5 }}> | ||||
<Typography variant="lionerLabel" component="span"> | <Typography variant="lionerLabel" component="span"> | ||||
Post | |||||
</Typography> | |||||
<TextField | |||||
fullWidth | |||||
{...register("post")} | |||||
inputProps={{maxLength: 50}} | |||||
id="post" | |||||
autoComplete="off" | |||||
/> | |||||
</Grid> | |||||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5 }}> | |||||
<Typography variant="lionerLabel" component="span"> | |||||
Sub-Division | |||||
User Group | |||||
</Typography> | </Typography> | ||||
<Autocomplete | <Autocomplete | ||||
disablePortal | disablePortal | ||||
id="sub-division-combo" | |||||
id="user-group-combo" | |||||
size="small" | size="small" | ||||
value={subDivision === null? null : subDivision} | |||||
options={subDivisionList} | |||||
value={userGroup === null? null : userGroup} | |||||
options={USER_GROUP_COMBO}//{userGroupList} | |||||
onChange={(event, newValue) => { | onChange={(event, newValue) => { | ||||
setSubDivision(newValue); | |||||
setUserGroup(newValue); | |||||
}} | }} | ||||
renderInput={(params) => <TextField {...params}/>} | renderInput={(params) => <TextField {...params}/>} | ||||
/> | /> | ||||
@@ -174,57 +160,18 @@ const UserSearchForm = ({applySearch}) => { | |||||
/> | /> | ||||
</Grid> | </Grid> | ||||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5 }}> | |||||
{/* <Grid item xs={9} s={6} md={5} lg={3} sx={{mt:2.5,ml:3, mr:3 }}> | |||||
<Typography variant="lionerLabel" component="span"> | <Typography variant="lionerLabel" component="span"> | ||||
User Type | |||||
Show Locked User Only | |||||
</Typography> | </Typography> | ||||
<Autocomplete | |||||
disablePortal | |||||
id="user-type-combo" | |||||
size="small" | |||||
value={selectedUserType === null? null : selectedUserType} | |||||
options={USER_TYPE_COMBO} | |||||
onChange={(event, newValue) => { | |||||
setSelectedUserType(newValue); | |||||
}} | |||||
renderInput={(params) => <TextField {...params}/>} | |||||
<Checkbox | |||||
checked={locked} | |||||
onChange={(event) => setLocked(event.target.checked)} | |||||
name="checked" | |||||
color="primary" | |||||
size="medium" | |||||
/> | /> | ||||
{/*<FormControlLabel*/} | |||||
{/* control={*/} | |||||
{/* <Checkbox*/} | |||||
{/* checked={selectedUserType}*/} | |||||
{/* onChange={(event) => setSelectedUserType(event.target.checked)}*/} | |||||
{/* name="checked"*/} | |||||
{/* color="primary"*/} | |||||
{/* size="medium"*/} | |||||
{/* />*/} | |||||
{/* }*/} | |||||
{/* label={<Typography variant="lionerLabel">Lotus Notes User</Typography>}*/} | |||||
{/*/>*/} | |||||
</Grid> | |||||
<Grid item xs={9} s={6} md={5} lg={3} sx={{mt:2.5,ml:3, mr:3 }}> | |||||
<FormControlLabel | |||||
control={ | |||||
<Checkbox | |||||
checked={locked} | |||||
onChange={(event) => setLocked(event.target.checked)} | |||||
name="checked" | |||||
color="primary" | |||||
size="medium" | |||||
/> | |||||
} | |||||
label={<Typography variant="lionerLabel">Locked</Typography>} | |||||
/> | |||||
</Grid> | |||||
{/*<Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:0.5 }}>*/} | |||||
{/* <TextField*/} | |||||
{/* fullWidth*/} | |||||
{/* {...register("subDivisionId")}*/} | |||||
{/* id="subDivision"*/} | |||||
{/* label="Sub-Division"*/} | |||||
{/* />*/} | |||||
{/*</Grid>*/} | |||||
</Grid> */} | |||||
</Grid> | </Grid> | ||||
@@ -11,7 +11,9 @@ import { useTheme } from '@mui/material/styles'; | |||||
import Checkbox from '@mui/material/Checkbox'; | import Checkbox from '@mui/material/Checkbox'; | ||||
import {CustomNoRowsOverlay} from "../../utils/CommonFunction"; | import {CustomNoRowsOverlay} from "../../utils/CommonFunction"; | ||||
import {LIONER_BUTTON_THEME} from "../../themes/colorConst"; | import {LIONER_BUTTON_THEME} from "../../themes/colorConst"; | ||||
import {USER_GROUP_COMBO} from "../../utils/ComboConst"; | |||||
import {ThemeProvider} from "@emotion/react"; | import {ThemeProvider} from "@emotion/react"; | ||||
// ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
export default function UserTable({recordList}) { | export default function UserTable({recordList}) { | ||||
@@ -70,30 +72,23 @@ export default function UserTable({recordList}) { | |||||
flex: 0.75, | flex: 0.75, | ||||
}, | }, | ||||
{ | { | ||||
id: 'post', | |||||
field: 'post', | |||||
headerName: 'Post', | |||||
id: 'groupId', | |||||
field: 'groupId', | |||||
headerName: 'User Group', | |||||
flex: 0.5, | flex: 0.5, | ||||
}, | |||||
{ | |||||
id: 'email', | |||||
field: 'email', | |||||
headerName: 'Email', | |||||
flex: 1.45, | |||||
renderCell: (params) => { | renderCell: (params) => { | ||||
const userGroup = USER_GROUP_COMBO.find(item => item.id === params.value)?? {label: "N/A"}; | |||||
return ( | return ( | ||||
<div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | <div style={{display: 'flex', alignItems: 'center', justifyContent: 'center', whiteSpace: 'normal', wordBreak: 'break-word'}}> | ||||
{params.value} | |||||
{userGroup.label} | |||||
</div> | </div> | ||||
); | ); | ||||
} | } | ||||
}, | }, | ||||
{ | { | ||||
id: 'subDivision', | |||||
field: 'subDivision', | |||||
//type: 'date', | |||||
//sortable: false, | |||||
headerName: 'Sub-Division', | |||||
id: 'email', | |||||
field: 'email', | |||||
headerName: 'Email', | |||||
flex: 1.45, | flex: 1.45, | ||||
renderCell: (params) => { | renderCell: (params) => { | ||||
return ( | return ( | ||||
@@ -103,25 +98,6 @@ export default function UserTable({recordList}) { | |||||
); | ); | ||||
} | } | ||||
}, | }, | ||||
{ | |||||
id: 'lotusNotesUser', | |||||
field: 'lotusNotesUser', | |||||
type: 'bool', | |||||
headerName: 'Lotus Notes', | |||||
flex: 0.63, | |||||
renderCell: (params) => { | |||||
return ( | |||||
<Checkbox | |||||
theme={theme} | |||||
key="locked" | |||||
checked={params.row.lotusNotesUser} | |||||
color="primary" | |||||
size="medium" | |||||
//onChange={handleChange} | |||||
/> | |||||
); | |||||
}, | |||||
}, | |||||
{ | { | ||||
id: 'locked', | id: 'locked', | ||||
field: 'locked', | field: 'locked', | ||||
@@ -130,14 +106,20 @@ export default function UserTable({recordList}) { | |||||
flex: 0.5, | flex: 0.5, | ||||
renderCell: (params) => { | renderCell: (params) => { | ||||
return ( | return ( | ||||
<Checkbox | |||||
theme={theme} | |||||
key="locked" | |||||
checked={params.row.locked} | |||||
color="primary" | |||||
size="medium" | |||||
//onChange={handleChange} | |||||
<input | |||||
type="checkbox" | |||||
checked={params.row.locked} | |||||
// onClick={handleClick} // Prevent click effect | |||||
/> | /> | ||||
// <Checkbox | |||||
// theme={theme} | |||||
// key="locked" | |||||
// checked={params.row.locked} | |||||
// color="primary" | |||||
// size="medium" | |||||
// disabled | |||||
// //onChange={handleChange} | |||||
// /> | |||||
); | ); | ||||
}, | }, | ||||
}, | }, | ||||
@@ -28,10 +28,6 @@ const UserSettingPage = () => { | |||||
getUserList(); | getUserList(); | ||||
}, []); | }, []); | ||||
useEffect(() => { | |||||
setOnReady(true); | |||||
}, [record]); | |||||
useEffect(() => { | useEffect(() => { | ||||
getUserList(); | getUserList(); | ||||
}, [searchCriteria]); | }, [searchCriteria]); | ||||
@@ -42,7 +38,11 @@ const UserSettingPage = () => { | |||||
) | ) | ||||
.then((response) => { | .then((response) => { | ||||
if (response.status === 200) { | if (response.status === 200) { | ||||
setRecord(response.data); | |||||
const suId = response.data.find(item => item.groupId == 3)?.id; | |||||
const res = response.data.filter(item => item?.id !== suId); | |||||
setRecord(res); | |||||
setOnReady(true); | |||||
} | } | ||||
}) | }) | ||||
.catch(error => { | .catch(error => { | ||||
@@ -56,9 +56,6 @@ const UserSettingPage = () => { | |||||
} | } | ||||
return ( | return ( | ||||
!onReady ? | |||||
<LoadingComponent/> | |||||
: | |||||
<Grid container rowSpacing={3} columnSpacing={2.75}> | <Grid container rowSpacing={3} columnSpacing={2.75}> | ||||
<ThemeProvider theme={LIONER_FORM_THEME}> | <ThemeProvider theme={LIONER_FORM_THEME}> | ||||
<Grid item xs={12} md={12} lg={12} sx={{mt:-1}}> | <Grid item xs={12} md={12} lg={12} sx={{mt:-1}}> | ||||
@@ -76,6 +73,9 @@ const UserSettingPage = () => { | |||||
<SearchForm applySearch={applySearch}/> | <SearchForm applySearch={applySearch}/> | ||||
</Grid> | </Grid> | ||||
{/*row 2*/} | {/*row 2*/} | ||||
{!onReady ? | |||||
<LoadingComponent/> | |||||
: | |||||
<Grid item xs={12} md={12} lg={12} sx={{mt:{lg:-1.5}}}> | <Grid item xs={12} md={12} lg={12} sx={{mt:{lg:-1.5}}}> | ||||
<MainCard elevation={0} | <MainCard elevation={0} | ||||
content={false} | content={false} | ||||
@@ -85,7 +85,7 @@ const UserSettingPage = () => { | |||||
recordList={record} | recordList={record} | ||||
/> | /> | ||||
</MainCard> | </MainCard> | ||||
</Grid> | |||||
</Grid>} | |||||
</ThemeProvider> | </ThemeProvider> | ||||
</Grid> | </Grid> | ||||
@@ -50,10 +50,10 @@ export const MODULE_COMBO = [ | |||||
{id:3, key: 3, label: 'Award'}, | {id:3, key: 3, label: 'Award'}, | ||||
]; | ]; | ||||
export const USER_TYPE_COMBO = [ | |||||
{id:1, key: 1, label: 'All Type'}, | |||||
{id:2, key: 2, label: 'Lotus Note User'}, | |||||
{id:3, key: 3, label: 'System User'}, | |||||
export const USER_GROUP_COMBO = [ | |||||
// {id:0, key: 0, label: 'System Admin'}, | |||||
{id:1, key: 1, label: 'Case Officer'}, | |||||
{id:2, key: 2, label: 'Administrator'}, | |||||
]; | ]; | ||||
export const EVENT_REGION_COMBO = [ | export const EVENT_REGION_COMBO = [ | ||||