import React, { useContext, useEffect, useState } from "react"; import { Button, Card, Col, Row, Table, Typography, DatePicker, Modal, Form, Input, Divider, List, Image, Tag, Tabs, Space, message, } from "antd"; import moment from "moment"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { FilterOutlined, ExportOutlined } from "@ant-design/icons"; import { format, parseISO } from "date-fns"; import { appConfig } from "../../config/app"; import { ModalLoaderContext } from "../../utils/modal"; import { useParams } from "react-router-dom"; const { TabPane } = Tabs; const { Title, Text } = Typography; const { RangePicker } = DatePicker; export const Profile = observer(() => { const store = useStore(); const [form] = Form.useForm(); const [formExport] = Form.useForm(); const { id } = useParams(); const modalLoader = useContext(ModalLoaderContext); const [filterStart, setFilterStart] = useState([]); const [filterEnd, setFilterEnd] = useState([]); const [actionFilter, setAction] = useState(false); const [visible, setVisible] = useState(false); const [modalExport, setModalExport] = useState(false); const routeData = [ { route: LINKS.HOME, name: "Beranda", }, { route: LINKS.PROFILE, name: Profil, }, ]; const dataRoute = [ { route: LINKS.PROFILE, name: "Profil", }, ]; useEffect(() => { (async () => { modalLoader.setLoading(true); await Promise.allSettled([ store.authentication.getProfile(), store.transaction.getDataHistoryTransaction(), store.transaction.getDataHistoryCheckBill(), ]); await store.transaction.getDataHistoryTopUpProfile( store.authentication.profileData?.id ); modalLoader.setLoading(false); })(); }, [store.transaction.filterStart, store.transaction.filterEnd]); const handleRemoveFilter = async () => { store.transaction.filterStart = null; store.transaction.filterEnd = null; form.resetFields(); setFilterStart([]); setFilterEnd([]); //await store.transaction.getDataHistoryTransaction(); // actionFilter === true // ? await store.transaction.getDataHistoryTopUpProfile( // store.authentication.profileData?.id // ) // : await store.transaction.getDataHistoryTransaction(); store.transaction.visibleModalFilterTransaction = false; setAction(false); }; const handleCancelFilter = async () => { store.transaction.filterStart = null; //form.resetFields(); store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; // actionFilter === true // ? await store.transaction.getDataHistoryTopUpProfile( // store.authentication.profileData?.id // ) // : await store.transaction.getDataHistoryTransaction(); setAction(false); //await store.transaction.getDataHistoryTransaction(); }; const handleSubmitFilter = async () => { const data = form.getFieldsValue(); store.transaction.filterStart = moment(data.start_date).format( "YYYY-MM-DD" ) + " 00:00:00"; store.transaction.filterEnd = moment(data.end_date).format( "YYYY-MM-DD" ) + " 23:59:59"; modalLoader.setLoading(true); // actionFilter === true // ? await store.transaction.getDataHistoryTopUpProfile( // store.authentication.profileData?.id // ) // : await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); // store.transaction.filterStart = null; // store.transaction.filterEnd = null; //form.resetFields(); store.transaction.visibleModalFilterTransaction = false; setAction(false); }; const footerLayoutFilter = [ , , , ]; const columns = [ { title: "Nama Produk", dataIndex: "name", key: "name", }, { title: "Harga", dataIndex: "price", key: "price", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Sisa Saldo", dataIndex: "balance_remaining", key: "balance_remaining", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Pembeli", dataIndex: "buyer", key: "buyer", width: "10%", }, { title: "Tujuan", dataIndex: "transaction_destination", key: "transaction_destination", }, { title: "Kode Transaksi", dataIndex: "transaction_code", key: "transaction_code", }, { title: "Status", dataIndex: "status", key: "status", render: (text, record) => { return ( {record.status === 1 ? "Sukses" : record.status === 0 ? "Dalam Proses" : "Gagal"} ); }, }, { title: "No Seri", dataIndex: "seri_number", key: "seri_number", }, { title: "IDTrx Mitra", dataIndex: "partner_transaction_code", key: "partner_transaction_code", }, { title: "Tanggal Transaksi", dataIndex: "created_at", key: "created_at", width: "15%", render: (text, record) => { return ( {moment(new Date (record.created_at).toISOString().replace('Z', ' ').replace('T', ' ')).format("MM-DD-YYYY HH:mm:ss")} ); }, }, { title: "Alasan Gagal", dataIndex: "failed_reason", key: "failed_reason", }, ]; const column = [ { title: "Pengirim", dataIndex: "sender_name", key: "sender_name", }, { title: "Nominal", dataIndex: "amount", key: "amount", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Tanggal Transaksi", dataIndex: "transaction_date", key: "transaction_date", render: (text, record) => { return ( {format(parseISO(record.transaction_date), "dd MMMM yyyy HH:mm:ss")} ); }, }, ]; const columnBill = [ { title: "Code Product", dataIndex: "product_code", key: "product_code", }, { title: "Admin Price", dataIndex: "admin_price", key: "admin_price", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Tagihan Postpaid", dataIndex: "amount", key: "amount", }, { title: "Nomor tujuan", dataIndex: "destination", key: "destination", }, { title: "Transaction Id", dataIndex: "trx_id", key: "trx_id", }, { title: "Partner Transaction Id", dataIndex: "partner_trx_id", key: "partner_trx_id", }, { title: "Tanggal Transaksi", dataIndex: "createdAt", key: "createdAt", render: (text, record) => { return ( {format(parseISO(record.createdAt), "dd MMMM yyyy HH:mm:ss")} ); }, }, { title: "Status", dataIndex: "status", key: "status", render: (text, record) => { console.log("status", record) return ( {record.status === "SUCCESS" ? "Sukses" : record.status === "PENDING" ? "Dalam Proses" : "Gagal"} ); }, }, ]; if (store.authentication.userData.role !== "Admin Partner") delete columns[2]; const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { display: "flex", justifyContent: "center", } : { fontSize: "0.75rem" }; const styleSaldoContent = store.ui.mediaQuery.isDesktop ? { fontSize: "1.25rem", display: "flex", justifyContent: "center", } : null; const handleSubmit = async (id, data) => { try { modalLoader.setLoading(true); const response = await store.membership.changePassword(id, data); console.log(id, "id yang masuk"); console.log(data, "data yang masuk"); message.success(response?.body?.message || "Berhasil Ganti Password"); } catch (e) { console.log(e, "apa errornya"); message.error(e.response?.body?.message || "Gagal Ganti Password"); } modalLoader.setLoading(false); setVisible(false); form.resetFields(); }; const handleSubmitExport = async () => { const date = formExport.getFieldsValue(); const dataDate ={ dateStart: moment(date.tanggal_export).format("YYYY-MM-DD") } modalLoader.setLoading(true); try { await store.transaction.exportTransaction(store.authentication.profileData, dataDate) // console.log('responseiniyak', response); // message.success("Success export"); setModalExport(false); modalLoader.setLoading(false); } catch (e) { setModalExport(false); console.error(e, "apa errornya"); message.error(e.response?.body?.message || "Failed to export"); modalLoader.setLoading(false); } }; return (
{console.log(store.authentication.profileData?.userDetail,':)')} {store.authentication.userData.role === "Admin Partner" ? ( Profile ): Profile} Nama {store.authentication.profileData?.userDetail?.name} No. Telepon {store.authentication.profileData?.userDetail?.phone_number} Username {store.authentication.profileData?.username} {/* Role {store.authentication.profileData.roles?.name} */} Upline {store.authentication.profileData.superior?.username} {store.authentication.userData.role === "Retail" && ( Foto Identitas Foto Toko {store.authentication.imageProfil.map((item) => ( ))} )} Saldo {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(store.authentication.profileData?.wallet || 0)} {store.authentication.userData.role != "Admin Partner" && store.authentication.userData.role != "Retail" && ( Profit {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(store.authentication.profileData?.profit || 0)} )} {store.authentication.userData.role === "Retail" && ( )} {store.ui.mediaQuery.isDesktop && ( { let pageNumber = page.current; store.transaction.pageSize = page.pageSize; store.transaction.page = pageNumber - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryTopUpProfile( store.authentication.profileData?.id ); modalLoader.setLoading(false); }} /> )} {store.ui.mediaQuery.isMobile && (
{ console.log(page, "Page"); console.log(pageSize, "Page size"); store.transaction.pageSize = pageSize; store.transaction.page = page - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryTopUpProfile( store.authentication.profileData?.id ); modalLoader.setLoading(false); }, pageSize: store.transaction.pageSize, total: store.transaction.total_dataHistoryTopUpProfile, current: store.transaction.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} style={{ padding: 0 }} renderItem={(item) => { return (

Pengirim : {item.sender_name} {" "}
Amount :{" "} {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(item.amount || 0)} {" "}
Transaction Date :{" "} {format( parseISO(item.transaction_date), "dd-MM-yyyy" )} {" "}

} />
); }} /> )} {store.ui.mediaQuery.isDesktop && (
{ let pageNumber = page.current; store.transaction.pageSize = page.pageSize; store.transaction.page = pageNumber - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); }} /> )} {store.ui.mediaQuery.isMobile && (
{ store.transaction.page = pageSize; store.transaction.page = page - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); }, pageSize: store.transaction.pageSize, total: store.transaction.total_dataHistoryTransaction, current: store.transaction.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} style={{ padding: 0 }} renderItem={(item) => { return (

Price : {item.price}
Tujuan : {item.transaction_destination} {" "}
Kode Transaksi : {item.transaction_code} {" "}
Status :{" "} { {item.status === 1 ? "Sukses" : item.status === 0 ? "Dalam Proses" : "Gagal"} } {" "}
No.Seri : {item.seri_number} {" "}
Alasan Gagal : {item.failed_reason} {" "}
IDTrx Mitra :{" "} {item.partner_transaction_code} {" "}
Transaction Date :{" "} {moment(new Date (item.created_at).toISOString().replace('Z', ' ').replace('T', ' ')).format("MM-DD-YYYY HH:mm:ss")} {" "}

} />
); }} /> )} {store.ui.mediaQuery.isDesktop && (
{ let pageNumber = page.current; store.transaction.pageSize = page.pageSize; store.transaction.page = pageNumber - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryCheckBill(); modalLoader.setLoading(false); }} /> )} {store.ui.mediaQuery.isMobile && (
{ console.log(page, "Page"); console.log(pageSize, "Page size"); store.transaction.pageSize = pageSize; store.transaction.page = page - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryCheckBill(); modalLoader.setLoading(false); }, pageSize: store.transaction.pageSize, total: store.transaction.total_dataHistorybillProfile, current: store.transaction.page + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} style={{ padding: 0 }} renderItem={(item) => { return (

Pengirim : {item.sender_name} {" "}
Amount :{" "} {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(item.amount || 0)} {" "}
Transaction Date :{" "} {format( parseISO(item.transaction_date), "dd-MM-yyyy" )} {" "}

} />
); }} /> )} { //form.resetFields(); store.transaction.filterStart = null; store.transaction.filterEnd = null; store.transaction.visibleModalFilterTransaction = false; actionFilter === true ? await store.transaction.getDataHistoryTopUpProfile( store.authentication.profileData?.id ) : await store.transaction.getDataHistoryTransaction(); }} > { form.resetFields(); //handleCancelTransaction(); setVisible(false); }} onOk={() => { form .validateFields() .then((values) => { console.log(store.authentication.profileData?.id, "id pass"); console.log(values, "id data"); console.log(store.membership.dataDetail.id, "id member"); handleSubmit(store.authentication.profileData?.id, values); form.resetFields(); }) .catch((info) => { console.error("Validate Failed:", info); }); }} >
{ setModalExport(false); }} > ); });