UNPKG

onnet-portal

Version:

Ant Design Pro based test2

144 lines (130 loc) 4.7 kB
/* eslint-disable @typescript-eslint/camelcase */ import React, { useState, useEffect } from 'react'; import { connect } from 'dva'; import * as _ from 'lodash'; import { formatMessage } from 'umi'; import { DownOutlined } from '@ant-design/icons'; import { Modal, Dropdown, Menu } from 'antd'; import { isArrayEqual, runAndDispatch } from '@/pages/onnet-portal/core/utils/subroutine'; import { AccountCallflow } from '../../../services/kazoo-telephony'; const { confirm } = Modal; const AccountOutboundRouting = props => { const [noMatchId, SetNoMatchId] = useState(false); const [currRoutingMode, SetCurrRoutingMode] = useState(''); const { dispatch, kz_account, kz_cf_list, kz_cf_details } = props; useEffect(() => { if (kz_account.data) { if (kz_cf_list) { if (_.find(kz_cf_list.data, { numbers: ['no_match'] })) { const noMatchCF = _.find(kz_cf_list.data, { numbers: ['no_match'] }); console.log('noMatchCF: ', noMatchCF); console.log( 'no_match: ', kz_cf_list.data.find(({ numbers }) => isArrayEqual(numbers, ['no_match'])), ); const { id } = kz_cf_list.data.find(({ numbers }) => isArrayEqual(numbers, ['no_match'])); if (kz_cf_details[id]) { SetNoMatchId(id); if ( (kz_cf_details[id].flow.module === 'resources' && kz_cf_details[id].flow.data.hunt_account_id) || kz_cf_details[id].flow.module === 'offnet' ) { SetCurrRoutingMode( formatMessage({ id: 'telephony.general_routing', defaultMessage: 'General routing', }), ); } else if (kz_cf_details[id].flow.module === 'resources') { SetCurrRoutingMode( formatMessage({ id: 'telephony.account_defined', defaultMessage: 'Account defined', }), ); } } else { dispatch({ type: 'kz_cf_details/refresh', payload: { method: 'GET', account_id: kz_account.data.id, callflow_id: id }, }); } } } } }, [kz_account, kz_cf_list, kz_cf_details]); if (!kz_cf_list.data) return null; const menuAccountOutboundRouting = ( <Menu selectedKeys={[]} onClick={onAccountOutboundRoutingSelect}> <Menu.Item key="general_routing"> {formatMessage({ id: 'telephony.general_routing', defaultMessage: 'General routing' })} </Menu.Item> <Menu.Item key="account_defined"> {formatMessage({ id: 'telephony.account_defined', defaultMessage: 'Account defined' })} </Menu.Item> </Menu> ); function onAccountOutboundRoutingSelect(event) { const { key } = event; confirm({ title: formatMessage({ id: 'telephony.outbound_routing', defaultMessage: 'Outbound routing', }), content: ( <span style={{ paddingLeft: '4em' }}> {formatMessage({ id: 'core.change_to', defaultMessage: 'Change to' })}{' '} <b> {key === 'general_routing' ? formatMessage({ id: 'telephony.general_routing', defaultMessage: 'General routing', }) : formatMessage({ id: 'telephony.account_defined', defaultMessage: 'Account defined', })} </b> ? </span> ), onOk() { setOutboundRouting(key); }, onCancel() {}, }); } function setOutboundRouting(routingType) { if (routingType === 'general_routing') { runAndDispatch(AccountCallflow, 'kz_cf_details/update', { method: 'PATCH', account_id: kz_account.data.id, callflow_id: noMatchId, // data: { flow: { data: { }, module: 'offnet' } }, data: { flow: { data: { hunt_account_id: kz_account.data.reseller_id }, module: 'resources' }, }, }); } else { runAndDispatch(AccountCallflow, 'kz_cf_details/update', { method: 'PATCH', account_id: kz_account.data.id, callflow_id: noMatchId, data: { flow: { data: {}, module: 'resources' } }, }); } } return ( <Dropdown overlay={menuAccountOutboundRouting} trigger={['click']}> <a className="ant-dropdown-link" href="#"> {currRoutingMode} <DownOutlined /> </a> </Dropdown> ); }; export default connect(({ kz_account, kz_cf_list, kz_cf_details }) => ({ kz_account, kz_cf_list, kz_cf_details, }))(AccountOutboundRouting);