import React, { Fragment, useState, useEffect } from 'react'; import { connect } from 'dva'; import { useMediaQuery } from 'react-responsive'; import * as _ from 'lodash'; import { DeleteOutlined, EditOutlined, InfoCircleOutlined, SearchOutlined, UserAddOutlined, ExclamationCircleOutlined, } from '@ant-design/icons'; import { Drawer, Table, Card, Modal, Switch, Button, Input } from 'antd'; import { formatMessage } from 'umi'; import styles from '@/pages/onnet-portal/core/style.less'; import { cardProps } from '@/pages/onnet-portal/core/utils/props'; import EditUserDrawer from './EditUserDrawer'; import UserParagraph from './UserParagraph'; import UserPrivLevel from './UserPrivLevel'; import CreateUserDrawer from './CreateUserDrawer'; import info_details_fun from '@/pages/onnet-portal/core/components/info_details'; import { kzUser, kzUsers } from '@/pages/onnet-portal/core/services/kazoo'; const { confirm } = Modal; const UsersList = props => { const [isPaginated, setIsPaginated] = useState({ position: 'bottom' }); const [dataSource, setDataSource] = useState([]); const [isDrawerVisible, setIsDrawerVisible] = useState(false); const [isCreateDrawerVisible, setIsCreateDrawerVisible] = useState(false); const [selectedUser, setSelectedUser] = useState(false); const { dispatch, settings, account, brief_users, full_users } = props; const formRef = React.createRef(); const isSmallDevice = useMediaQuery({ maxWidth: 991 }); useEffect(() => { if (brief_users.data) { setDataSource(brief_users.data); } else { dispatch({ type: 'kz_brief_users/refresh', payload: { account_id: account.data.id }, }); } }, [brief_users]); if (brief_users.data) { if (brief_users.data.length === 0) { return null; } } else { return null; } const deleteChildUser = record => { confirm({ title: `${formatMessage({ id: 'core.Do_you_want_to_delete_user', defaultMessage: 'Do you want to delete user', })}?`, content: ( {record.username} ( {record.first_name} {record.last_name} ) ), icon: , okType: 'danger', okText: formatMessage({ id: 'core.Yes', defaultMessage: 'Yes' }), cancelText: formatMessage({ id: 'core.No', defaultMessage: 'No' }), onOk() { kzUser({ method: 'DELETE', account_id: account.data.id, owner_id: record.id }) .then(uRes => { console.log(uRes); dispatch({ type: 'kz_brief_users/refresh', payload: { account_id: account.data.id }, }); }) .catch(() => console.log('Oops errors!', record)); }, onCancel() {}, }); }; const columns = [ { dataIndex: 'id', key: 'isUserEnabled', align: 'center', render: (text, record) => ( onUserEnableSwitch(checked, record)} /> ), }, { title: formatMessage({ id: 'core.Username', defaultMessage: 'Username' }), dataIndex: 'username', key: 'username', }, { title: formatMessage({ id: 'core.First_name', defaultMessage: 'First name' }), dataIndex: 'first_name', key: 'first_name', align: 'center', render: (text, record) => ( ), }, { title: formatMessage({ id: 'core.Last_name', defaultMessage: 'Last Name' }), dataIndex: 'last_name', key: 'last_name', align: 'center', render: (text, record) => ( ), }, { title: formatMessage({ id: 'core.Privilege', defaultMessage: 'Privilege' }), dataIndex: 'priv_level', key: 'priv_level', align: 'center', render: (text, record) => ( ), }, { dataIndex: 'id', key: 'edit_user', align: 'center', render: (text, record) => ( { setSelectedUser(record.id); dispatch({ type: 'kz_full_users/refresh', payload: { account_id: account.data.id, owner_id: record.id }, }); setIsDrawerVisible(true); }} /> ), }, { dataIndex: 'id', key: 'delete_user', align: 'center', render: (text, record) => ( deleteChildUser(record)} /> ), }, { dataIndex: 'id', key: 'id', align: 'center', render: (text, record) => ( { console.log('event', event); const result = dataSource.find(({ id }) => id === record.id); console.log('result', result); info_details_fun(full_users[record.id].data); }} /> ), }, ]; function onUserEnableSwitch(checked, record) { confirm({ title: (

{formatMessage({ id: 'core.User', defaultMessage: 'User' })}: {record.username}

), content: ( {checked ? formatMessage({ id: 'core.switch_on', defaultMessage: 'Switch ON' }) : formatMessage({ id: 'core.switch_off', defaultMessage: 'Switch OFF' })} ), onOk() { kzUser({ method: 'PATCH', account_id: account.data.id, owner_id: record.id, data: { enabled: checked }, }) .then(uRes => { console.log(uRes); dispatch({ type: 'kz_full_users/refresh', payload: { account_id: account.data.id, owner_id: record.id }, }); }) .catch(() => console.log('Oops errors!', record)); }, onCancel() {}, }); } const handlePagination = e => { console.log('handlePagination e: ', e); if (e) { setIsPaginated({ position: 'bottom' }); } else { setIsPaginated(false); } }; const onDrawerClose = () => { setIsDrawerVisible(false); setSelectedUser(false); }; const onCloseCancel = () => { formRef.current.resetFields(); setIsCreateDrawerVisible(false); }; const onCloseSubmit = () => { formRef.current.submit(); }; const onFinish = values => { const userDataBag = { username: values.email, first_name: values.first_name, last_name: values.last_name, enaled: 'true', priv_level: 'admin', email: values.email, password: values.password, }; kzUsers({ method: 'PUT', account_id: account.data.id, data: userDataBag, }).then(uRes => { console.log('kzUsers uRes: ', uRes); dispatch({ type: 'kz_brief_users/refresh', payload: { account_id: account.data.id }, }); setSelectedUser(uRes.data.id); dispatch({ type: 'kz_full_users/refresh', payload: { account_id: account.data.id, owner_id: uRes.data.id }, }); setIsDrawerVisible(true); }); formRef.current.resetFields(); setIsCreateDrawerVisible(false); }; const onSearchChange = e => { console.log(e); const { value } = e.target; console.log('Value: ', value); if (value.length > 1) { const searchRes = _.filter(brief_users.data, o => _.includes(_.toString(Object.values(o)).toLowerCase(), value.toLowerCase()), ); setDataSource(searchRes); } else { setDataSource(brief_users.data); } }; return ( {!isSmallDevice ? formatMessage({ id: 'reseller_portal.accounts_users', defaultMessage: "Account's Users", }) : null} { setIsCreateDrawerVisible(true); }} />

} allowClear size="small" onChange={onSearchChange} />

{!isSmallDevice ? `${formatMessage({ id: 'core.pagination', defaultMessage: 'pagination', })}:` : null}

} description={ record.id} /> } /> {formatMessage({ id: 'core.Create_user', defaultMessage: 'Create user' })} } width={isSmallDevice ? '100%' : '50%'} placement="right" onClose={onCloseCancel} visible={isCreateDrawerVisible} bodyStyle={{ paddingBottom: 80 }} footer={
} >
); }; export default connect(({ settings, kz_account, kz_brief_users, kz_full_users }) => ({ settings, account: kz_account, brief_users: kz_brief_users, full_users: kz_full_users, }))(UsersList);