From 08196fdc1de76af146ae50369bf61bed43b4f68d Mon Sep 17 00:00:00 2001 From: rahman Date: Sat, 31 Dec 2022 05:00:48 +0700 Subject: [PATCH] fix: list history top up --- package.json | 2 + src/pages/Membership/DetailUser.js | 59 ++++++++++++++++++++++++++++-- src/store/transaction.js | 18 +++++++++ 3 files changed, 75 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2ec0235..5ddb8ec 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "babel-plugin-named-asset-import": "^0.3.7", "babel-preset-react-app": "^10.0.0", "bfj": "^7.0.2", + "blob-util": "^2.0.2", "camelcase": "^6.2.0", "case-sensitive-paths-webpack-plugin": "2.4.0", "css-loader": "4.3.0", @@ -39,6 +40,7 @@ "eslint-plugin-testing-library": "^3.9.2", "eslint-webpack-plugin": "^2.5.4", "file-loader": "6.2.0", + "file-saver": "^2.0.5", "fs-extra": "^10.0.0", "html-webpack-plugin": "4.5.0", "identity-obj-proxy": "3.0.0", diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js index cb0c818..6643085 100644 --- a/src/pages/Membership/DetailUser.js +++ b/src/pages/Membership/DetailUser.js @@ -17,7 +17,7 @@ import { Form, DatePicker, } from "antd"; -import { UserOutlined, FilterOutlined } from "@ant-design/icons"; +import { UserOutlined, FilterOutlined,ExportOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; @@ -28,12 +28,14 @@ import { useParams } from "react-router-dom"; import { appConfig } from "../../config/app"; import { MembershipModal } from "./MembershipModal"; import moment from "moment"; +import FileSaver from "file-saver"; const { Title, Text } = Typography; const { TabPane } = Tabs; export const DetailUser = observer(() => { const store = useStore(); const [form] = Form.useForm(); + const [formExport] = Form.useForm(); const modalLoader = useContext(ModalLoaderContext); const { id } = useParams(); const [visibleModal, setVisibleModal] = useState(false); @@ -43,6 +45,7 @@ export const DetailUser = observer(() => { const [filterEnd, setFilterEnd] = useState([]); const [visibleHis, setVisibleHis] = useState(true); const [actionFilter, setAction] = useState(false); + const [modalExport, setModalExport] = useState(false); useEffect(() => { (async () => { @@ -160,6 +163,29 @@ export const DetailUser = observer(() => { } modalLoader.setLoading(false); }; + + const handleSubmitExport = async () => { + const date = formExport.getFieldsValue(); + const data ={ + dateStart: moment(date.tanggal_export).format("YYYY-MM-DD") + } + modalLoader.setLoading(true); + try { + const response = await store.transaction.exportTransaction(store.membership.dataDetail.id, data) + FileSaver.saveAs(response, `Helo.xlsx`) + response.statusCode == 201 || response.statusCode == 200 + ? message.success(response?.body?.message || `Success Export`) + : message.error(response?.body?.message || `Failed Export`); + } catch (e) { + console.error(e, "apa errornya"); + message.error(e.response?.body?.message || "Fail Approve"); + setModalExport(false) + modalLoader.setLoading(false); + } + setModalExport(false) + modalLoader.setLoading(false); + }; + const columns = [ { title: "Pengirim", @@ -542,6 +568,11 @@ export const DetailUser = observer(() => { Withdraw Profit )} + @@ -787,9 +818,9 @@ export const DetailUser = observer(() => { dataSource={store.transaction.dataHistoryTopUp} bordered pagination={{ - pageSize: store.transaction.pageSizeHistoryTransaction, - total: store.transaction.total_dataHistoryTransaction, - current: store.transaction.pageHistoryTransaction + 1, + pageSize: store.transaction.pageSizeHistoryTopUp, + total: store.transaction.total_dataHistoryTopUp, + current: store.transaction.pageHistoryTopUp + 1, showSizeChanger: true, simple: false, }} @@ -1106,6 +1137,26 @@ export const DetailUser = observer(() => { + + + +
+ + + +
+ +
+
); }); diff --git a/src/store/transaction.js b/src/store/transaction.js index 54b9c09..db72d27 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -1,5 +1,6 @@ import { makeAutoObservable } from "mobx"; import { http } from "../utils/http"; +import { binaryStringToArrayBuffer, arrayBufferToBlob } from 'blob-util' export class Transaction { page = 0; @@ -267,4 +268,21 @@ export class Transaction { console.error(e); } } + + async exportTransaction(id,data) { + try { + const response = await http + .post(`/excel/history-user/export/${id}`) + .send(data) + +console.log(response, 'ress'); + const apa = binaryStringToArrayBuffer(response.text) + const ini = arrayBufferToBlob(apa, 'text/xlsx') + let file = new File([ini], 'text.xlsx', {type: "text/xlsx;charset=utf-8"}) +console.log(file, 'ini file'); + return file; + } catch (e) { + console.error(e); + } + } }