import { useAntdTable, useRequest } from 'ahooks' import { Button, ConfigProvider, Flex, Form, Input, Modal, Space, Table, Typography, message } from 'antd' import { ColumnsType } from 'antd/es/table' import { useState, useCallback } from 'react' import CreateLecture from './components/CreateLecture' import { Lecturers } from '@/types' import api from '@/config/api' import axios from 'axios' type DataType = { id: number name: string email: string } type Result = { total: number list: Lecturers[] } export default function Lecture() { // data lecturer const [createLecture, setCreateLecture] = useState(false) const [modal, contextHolder] = Modal.useModal() const [form] = Form.useForm() const { runAsync: getLectures } = useRequest(api.getLecturers, { manual: true, onSuccess: (res) => { if (res) { return res } }, onError: (err) => { console.log(err) } }) const getTableData = async (_: never, { search }: { search: string }): Promise => { const res = await getLectures() if (res) { let object = { total: res.length, list: res } if (search) { const data = res.filter((item) => item.name.includes(search)) object = { total: data.length, list: data } } return object } return { total: 0, list: [] } } const { tableProps, search, data } = useAntdTable(getTableData, { defaultPageSize: 5, form }) const { submit } = search const { runAsync: createLectures } = useRequest( async (value) => { const res = await api.createLectures(value) await axios.post( 'https://api.clerk.com/v1/users', { first_name: value.name, last_name: value.name, email_address: [value.email], password: value.password }, { headers: { Authorization: `Bearer sk_test_fc0dJDbMQTnTPbWYVy9c4v0LdhDSKNMH1U2YFukB3d` } } ) return res }, { manual: true, onSuccess: (res) => { if (res) { message.success('Create lectures success') submit() setCreateLecture(false) } }, onError: (err) => { console.log(err) } } ) const { runAsync: deleteLectures } = useRequest(api.deleteLectures, { manual: true, onSuccess: (res) => { if (res) { message.success('Delete lectures success') submit() } }, onError: (err) => { console.log(err) } }) const onDelete = useCallback((id: number) => { deleteLectures(id.toString()) }, []) const columns: ColumnsType = [ { title: 'ID', key: 'id', dataIndex: 'id' }, { title: 'Name', key: 'name', dataIndex: 'name' }, { title: 'Email', key: 'email', dataIndex: 'email' }, { title: 'Action', key: 'action', width: 150, render: (_, record) => ( ) } ] const searchForm = (
) return ( Account: {data?.total ?? 0} {searchForm} setCreateLecture(false)} onFinish={(value) => { createLectures(value) }} // onOk={() => setCreateLecture(false)} /> {contextHolder} ) }