// material-ui import { Button, Grid, Typography, Stack, Box, Tab } from '@mui/material'; import { TabPanel, TabContext, TabList } from '@mui/lab'; import MainCard from "components/MainCard"; import { useEffect, useState, lazy } from "react"; import axios from "axios"; import { useNavigate, useParams } from "react-router-dom"; import { GLD_USER_PATH, DELETE_USER, POST_ADMIN_USER_REGISTER, GET_LOGIN_LOG_LIST } from "utils/ApiPathConst"; import * as HttpUtils from "utils/HttpUtils"; import {isGrantedAny} from "auth/utils"; import Loadable from 'components/Loadable'; 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'))); const LoginGrid = Loadable(lazy(() => import('./LoginGrid'))); import { ThemeProvider } from "@emotion/react"; import { PNSPS_BUTTON_THEME } from "themes/buttonConst"; import { GeneralConfirmWindow, getDeletedRecordWithRefList, notifyDeleteSuccess, notifySaveSuccess, } from "utils/CommonFunction"; import ForwardIcon from '@mui/icons-material/Forward'; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' 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] = 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] = useState({}); const [editMode, setEditMode] = useState(false); const [createMode, setCreateMode] = useState(false); const [selectedTab, setSelectedTab] = useState("1"); function updateUserObject(userData) { setEditedCustomerData(userData); } function updateUserGroupList(userGroupData) { setUserGroupData(userGroupData); } function updateUserAuthList(userAuthData) { setUserAuthData(userAuthData); } const submitData = () => { setUserConfirm(true); setIsCollectData(!isCollectData); } const handleChange = (event, newValue) => { setSelectedTab(newValue); } // ==============================|| 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) { loadData() } else { setUserData( { "authIds": [], "data": {}, "groupIds": [] } ); setRefUserData( { "authIds": [], "data": {}, "groupIds": [] } ); setIsNewRecord(true); setCreateMode(true) } }, []); const loadData = () => { setOnReady(false); setEditMode(false); axios.get(`${GLD_USER_PATH}/${params.id}`) .then((response) => { if (response.status === 200) { setRefUserData(response.data); setUserData(response.data); getLoginLogList() } }) .catch(error => { console.log(error); return false; }); } useEffect(() => { // if (Object.keys(userData).length > 0 && userData !== undefined) { 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); // console.log(userGroupData) // console.log(userAuthData) if (parseInt(params.id) > -1) { 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 === 204) { notifySaveSuccess(); location.reload(); } }) .catch(error => { console.log(error); return false; }); } else { if (editedCustomerData.pwErr) return; axios.post(POST_ADMIN_USER_REGISTER, { "username": editedCustomerData.username, "name": editedCustomerData.username, "password": editedCustomerData.password, "enName": editedCustomerData.enName, "locked": editedCustomerData.locked, "emailAddress": editedCustomerData.emailAddress, "post": editedCustomerData.post, "addGroupIds": userGroupData, "removeGroupIds": [], "addAuthIds": userAuthData, "removeAuthIds": [], }, ).then((response) => { if (response.status === 200) { notifySaveSuccess(); navigate('/userSearchview'); } }) .catch(function (error){ // console.log(error.response.data) if(error.response.data.error == "USERNAME_NOT_AVAILABLE"){ alert("Username is already used.") } return false; }); } } setUserConfirm(false); }, [editedCustomerData, userGroupData, userAuthData]); const getLoginLogList = () => { HttpUtils.get({ url: `${GET_LOGIN_LOG_LIST}`, params: { u1: params.id }, onSuccess: function (response) { // console.log(response) setLoginLogData(response); } }); } const onEditClick = () => { setEditMode(true); }; return ( !onReady ? : {isNewRecord ? "Create GLD User" : "Maintain GLD User"} { navigate("/userSearchview") }}> {/*col 1*/} {/*bottom button*/} { isGrantedAny(["MAINTAIN_USER"]) ? { createMode? Create User : editMode ? Reset & Back Save : Edit Delete User } : <>> } {/*col 2*/} ); }; export default UserMaintainPage;