import React, { useContext, useEffect, useState } from "react"; import { Button, Card, Col, Divider, Image, Input, List, message, Modal, Row, Space, Table, Tag, Select, Typography, DatePicker, Form, } from "antd"; import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { CheckCircleOutlined, CheckOutlined, CloseOutlined, FilterOutlined, StopOutlined, } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { LINKS } from "../../routes/app"; import { ModalLoaderContext } from "../../utils/modal"; import { appConfig } from "../../config/app"; import { capitalize } from "lodash"; import { PAYBACK_STATUS } from "../../constants/payback"; import moment from "moment"; const { Search } = Input; const { RangePicker } = DatePicker; export const Payback = observer(() => { const { Option } = Select; const { Title } = Typography; const [form] = Form.useForm(); const store = useStore(); const modalLoader = useContext(ModalLoaderContext); const [filterMembership, setFilterMembership] = useState([]); const [filterSubCategories, setFilterSubCategories] = useState([]); useEffect(() => { const init = async () => { try { modalLoader.setLoading(true); await store.membership.getData(); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); if (e.response?.body?.message) { message.error(e.response.body.message); return; } message.error(e.message); } }; init(); }, []); const columns = [ { title: "Name", dataIndex: "userData_name", key: "userData_name", }, { title: "Picture", dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( {record.id} ), }, { title: "Amount", dataIndex: "amount", key: "amount", width: "20%", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Action", dataIndex: "amount", key: "action", width: "10%", render: (text, record) => PAYBACK_STATUS[record.status] === PAYBACK_STATUS[0] ? ( ) : ( {PAYBACK_STATUS[record.status]} ), }, ]; if (store.authentication.userData.role === "Retail") columns.pop(); const routeData = [ { route: LINKS.HOME, name: "Beranda", }, { route: LINKS.PAYBACK, name: Konfirmasi Pembayaran, }, ]; const handleAction = async (id, type) => { modalLoader.setLoading(true); try { const response = await store.payback.confirmPayback(id, type); console.log(response); response.body.statusCode !== 201 && response.body.statusCode !== 200 ? message.error( response?.body?.message || `Failed ${capitalize(type)} Payback` ) : message.success( response?.body?.message || `Success ${capitalize(type)} Payback` ); // if (response.body.status !== 201 ) { // message.error( // response?.body?.message || `Failed ${capitalize(type)} Payback` // ); // } else { // message.success( // response?.body?.message || `Success ${capitalize(type)} Payback` // ); // } } catch (e) { console.error(e, "apa errornya"); message.error( e.response?.body?.message || "Failed Handler Action Payback" ); } modalLoader.setLoading(false); }; const handleRemoveFilter = async () => { store.payback.filterMembership = null; store.payback.filterStart = null; store.payback.filterEnd = null; setFilterMembership([]); form.resetFields(); await store.payback.getDataConfirmation(); store.payback.visibleModalFilterPayback = false; }; const handleCancelFilter = async() => { //setFilterMembership([]); //form.resetFields(); store.payback.filterMembership = null; store.payback.filterStart = null; store.payback.filterEnd = null; store.payback.visibleModalFilterPayback = false; await store.payback.getDataConfirmation(); }; const handleSubmitFilter = async () => { const data = form.getFieldsValue(); //console.log(data); store.payback.filterMembership = filterMembership; store.payback.filterStart = data.start_date ? (moment(data.start_date).format('YYYY-MM-DD') + ' 00:00:00') : null; store.payback.filterEnd = data.end_date ? (moment(data.end_date).format('YYYY-MM-DD') + ' 23:59:59') : null; modalLoader.setLoading(true); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); store.payback.visibleModalFilterPayback = false; }; const handleFilterCategory = async (value) => { if (value) { store.product.filterCategory = value; await store.product.getDataSubCategories(); } else { store.product.filterCategory = null; await store.product.getDataSubCategories(); } }; const footerLayoutFilter = [ , , , ]; return (
{/* */} {store.ui.mediaQuery.isDesktop && ( { let pageNumber = page.current; store.payback.pageSizeConfirmation = page.pageSize; store.payback.pageConfirmation = pageNumber - 1; modalLoader.setLoading(true); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); }} /> )} {store.ui.mediaQuery.isMobile && ( { store.payback.pageSizeConfirmation = page.pageSize; store.payback.pageConfirmation = page.current - 1; modalLoader.setLoading(true); await store.payback.getDataConfirmation(); modalLoader.setLoading(false); }, pageSize: store.payback.pageSizeConfirmation, total: store.payback.totalDataConfirmation, current: store.payback.pageConfirmation + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={store.payback.dataConfirmation} style={{ padding: 0 }} renderItem={(item) => { return (

Amount: {item.amount}
{PAYBACK_STATUS[item.status] === PAYBACK_STATUS[0] ? ( ) : ( {PAYBACK_STATUS[item.status]} )}

} />

); }} /> )} { //form.resetFields(); //setFilterMembership([]); store.payback.filterMembership = null; store.payback.filterStart = null; store.payback.filterEnd = null; store.payback.visibleModalFilterPayback = false; await store.payback.getDataConfirmation(); }} >
Sender {/* */} {/* Date */} {/* */} {/* */} {/* Filter Sub-Categories */} ); });