// material-ui import { Button, Grid, Typography, Stack } 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} 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, } from "../../utils/CommonFunction"; // ==============================|| 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 [userGroupData,setUserGroupData] = useState([]); const [userAuthData,setUserAuthData] = useState([]); const [userConfirm, setUserConfirm] = useState(false); const [isNewRecord, setIsNewRecord] = useState(false); const [refUserData, setRefUserData] = React.useState({}); function updateUserObject(userData) { setEditedCustomerData(userData); } function updateUserGroupList(userGroupData){ setUserGroupData(userGroupData); } function updateUserAuthList(userAuthData){ setUserAuthData(userAuthData); } 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(() => { if(params.id > 0 ){ axios.get(`${GLD_USER_PATH}/${params.id}`) .then((response) => { if (response.status === 200) { setRefUserData(response.data); setUserData(response.data); } }) .catch(error => { console.log(error); return false; }); } else{ setUserData( { "authIds": [], "data": {}, "groupIds": [] } ); setRefUserData( { "authIds": [], "data": {}, "groupIds": [] } ); setIsNewRecord(true); } }, []); useEffect(() => { if (Object.keys(userData).length > 0 && userData !== undefined) { setOnReady(true); } else if(isNewRecord){ setOnReady(true); } }, [userData]); useEffect(() => { if(userConfirm && onReady){ const deletedUserAuth = getDeletedRecordWithRefList(refUserData.authIds,userAuthData); const deletedUserGroup = getDeletedRecordWithRefList(refUserData.groupIds,userGroupData); axios.post(`${GLD_USER_PATH}/${params.id}`, { "enName": editedCustomerData.enName, "locked": editedCustomerData.locked, // "password": editedCustomerData.password, // "phone": editedCustomerData.phone, "post": editedCustomerData.post, "emailAddress": editedCustomerData.emailAddress, "addGroupIds": userGroupData, "removeGroupIds": deletedUserGroup, "addAuthIds": userAuthData, "removeAuthIds": deletedUserAuth, }, ).then((response) => { if (response.status === 200) { // notifySaveSuccess(); navigate('/userSearchview'); } }) .catch(error => { console.log(error); return false; }); } setUserConfirm(false); }, [editedCustomerData,userGroupData,userAuthData]); return ( !onReady ? : Maintain User {/*col 1*/} {/*col 2*/} {/*bottom button*/} ); }; export default UserMaintainPage;