import React, { Component, memo } from "react";
import { createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';
import SearchIcon from '@material-ui/icons/Search';
import Images from "../../../assets/Images";
import MUIDataTable from "mui-datatables";
import AddRole from './AddRole';
import EditRole from './EditRole'
import api from "../../../api";
import { titleCase } from "../../../library/Utils";
import InputAdornment from '@material-ui/core/InputAdornment';
import TextField from '@material-ui/core/TextField';
import { InputBase, Snackbar } from "@material-ui/core";
import ReactTooltip from "react-tooltip";
import MuiAlert from '@material-ui/lab/Alert';
import { withStyles } from '@material-ui/core/styles';
import Constant from "../../../library/Constant";
import PropagateLoader from "react-spinners/PropagateLoader"
var ct = require("../../../library/CustomTable");
const getMuiTheme = () => createMuiTheme(ct.customTable());
const options = ct.customOptions();
const Alert = withStyles({
})((props) => );
class UserRole extends Component {
constructor(props) {
super(props)
this.state = {
listRole: [],
indexData: {},
add: false,
edit: false,
search: '',
alert: false,
tipeAlert: '',
messageAlert: '',
buttonCreate: false,
buttonEdit: false,
buttonDelete: false,
load: false,
loading: false
}
}
componentDidMount() {
this.getRole()
this.getPermission()
}
closeEdit() {
this.setState({ edit: false })
}
closeAdd() {
this.setState({ add: false })
}
getRole() {
this.setState({loading: true})
api.create().getRole().then((response) => {
if (response.data) {
if (response.ok) {
if (response.data.status === 'success') {
let data = response.data.data
let listData = data.sort((a, b) => a.role_id - b.role_id).map((item, index) => {
return [index, item.role_id, item.role_name, item.access, item.status]
})
// console.log(listData)
this.setState({ listRole: listData }, () => {
setTimeout(() => {
this.setState({loading: false})
}, 2000);
})
// this.setState({listRole: response.data.data}, () => {
// console.log(this.state.listRole)
// })
} else {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false}, () => {
if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
setTimeout(() => {
localStorage.removeItem(Constant.TOKEN)
window.location.reload();
}, 1000);
}
})
}
} else {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error', loading: false })
}
} else {
this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', loading: false })
}
})
}
getPermission() {
let payload = {
menu: "user role"
}
api.create().getPermission(payload).then(response => {
// console.log(response)
if (response.data) {
if (response.data.status === "success") {
this.setState({
buttonCreate: response.data.data.create,
buttonEdit: response.data.data.edit,
buttonDelete: response.data.data.delete,
load: true
})
} else {
this.setState({ load: true })
}
}
})
}
searchRole() {
let payload = {
"keyword": this.state.search
}
api.create().searchRole(payload).then((response) => {
if (response.data) {
if (response.ok) {
if (response.data.status === 'success') {
let data = response.data.data
let listData = data.sort((a, b) => a.role_id - b.role_id).map((item, index) => {
return [index, item.role_id, item.role_name, item.access, item.status]
})
this.setState({ listRole: listData })
} else {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
setTimeout(() => {
localStorage.removeItem(Constant.TOKEN)
window.location.reload();
}, 1000);
}
})
}
} else {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
}
} else {
this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
}
})
}
_handleKeyDown(e) {
if (e.key === 'Enter') {
if (this.state.search.length > 0) {
this.searchRole()
} else {
this.getRole()
}
}
}
handleChange(e) {
let data = this.state
window.requestIdleCallback((e) => this.setState({ ...data, [e.target.name]: e.target.value }, () => {
// alert('asdk')
}))
}
closeAlert() {
this.setState({ alert: false })
}
deleteRole() {
let data = this.state.rowData
api.create().deleteRole(data[1]).then((response) => {
if (response.data) {
if (response.ok) {
if (response.data.status === 'success') {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success', popupDel: false })
} else {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', popupDel: false }, () => {
if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
setTimeout(() => {
localStorage.removeItem(Constant.TOKEN)
window.location.reload();
}, 1000);
}
})
}
} else {
this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error', popupDel: false })
}
} else {
this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', popupDel: false })
}
this.getRole()
})
}
render() {
const columns = [{
name: "Action",
options: {
filter: false,
customBodyRender: (val, tableMeta) => {
// console.log(tableMeta);
return (
{this.state.buttonEdit && (
)}
{this.state.buttonDelete && (
)}
);
}
}
}, {
name: "ID",
options: {
// filter: false,
customBodyRender: (val, tableMeta) => {
return (
{val}
);
}
}
}, {
name: "User Role",
options: {
customBodyRender: (val, tableMeta) => {
return (
{titleCase(val)}
);
}
}
}, {
name: "Access Rights",
options: {
customBodyRender: (val, tableMeta) => {
return (
{val + ' Modul'}
);
}
}
}, {
name: "Status",
options: {
customBodyRender: (val, tableMeta) => {
return (
{val}
);
}
}
}]
const loadingComponent = (
);
return (
{/*
*/}
this.closeAlert()}>
this.closeAlert()} severity={this.state.tipeAlert}>
{this.state.messageAlert}
{this.state.load && (
{/*
{
this.setState({ search: e.target.value }, () => {
if (this.state.search.length > 0) {
this.searchRole()
} else {
this.getRole()
}
});
}}
inputProps={{ 'aria-label': 'naked' }}
/>
*/}
{/*
*/}
)}
{this.state.loading && loadingComponent}
{this.state.add && (
)}
{this.state.edit && (
)}
{this.state.popupDel && (
Delete {titleCase(this.state.rowData[2])} ?
//
//
//
//

//
//
//
// Delete {titleCase(this.state.rowData[2])} ?
//
// {/*
// {`Please try again later.`}
// */}
//
//
//
//
//
//
//
)}
);
}
}
export default memo(UserRole);