diff --git a/src/component/CategoryComponent.js b/src/component/CategoryComponent.js index 2866c89..9377b1f 100644 --- a/src/component/CategoryComponent.js +++ b/src/component/CategoryComponent.js @@ -45,7 +45,7 @@ export const CategoryComponent = observer((props) => { key: "name", }, { - title: "Action", + title: "Tindakan", key: "action", render: (text, record) => ( @@ -209,7 +209,7 @@ export const CategoryComponent = observer((props) => { visible={store.category.visibleModalCategory} title={idData ? "Edit Category" : "Create a new Category"} okText={idData ? "Edit" : "Create"} - cancelText="Cancel" + cancelText="Batal" onCancel={() => { form.resetFields(); handleCancel(); diff --git a/src/component/CommissionComponent.js b/src/component/CommissionComponent.js index f63f249..94d7abf 100644 --- a/src/component/CommissionComponent.js +++ b/src/component/CommissionComponent.js @@ -28,13 +28,13 @@ export const CommissionComponent = observer((props) => { key: "name", }, { - title: "Amount", + title: "Nominal", dataIndex: "commission", key: "commission", render: (text) => {text}%, }, { - title: "Action", + title: "Tindakan", key: "action", render: (text, record) => ( @@ -44,6 +44,8 @@ export const CommissionComponent = observer((props) => { }, ]; + if (store.authentication.userData.role === "Customer Service") columns.pop(); + const handleCancel = () => { setIdData(""); store.commission.visibleModalCommission = false; @@ -93,7 +95,7 @@ export const CommissionComponent = observer((props) => { visible={store.commission.visibleModalCommission} title={"Edit Commission"} okText={"Edit"} - cancelText="Cancel" + cancelText="Batal" onCancel={() => { form.resetFields(); handleCancel(); diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index a9ca3c1..ed31f0a 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -86,7 +86,7 @@ export const PartnerComponent = observer((props) => { key: "npwp", }, { - title: "Address", + title: "Alamat", dataIndex: "address", key: "address", }, @@ -104,7 +104,7 @@ export const PartnerComponent = observer((props) => { ), }, { - title: "Action", + title: "Tindakan", key: "action", render: (text, record) => ( @@ -123,6 +123,8 @@ export const PartnerComponent = observer((props) => { ), }, ]; + + if (store.authentication.userData.role === "Customer Service") columns.pop(); const deleteData = async (id) => { try { @@ -143,12 +145,12 @@ export const PartnerComponent = observer((props) => { icon: , okText: "Yes", okType: "primary", - cancelText: "Cancel", + cancelText: "Batal", onOk() { return deleteData(id); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }; @@ -273,7 +275,7 @@ export const PartnerComponent = observer((props) => {
Nama : {item.name}
Npwp : {item.npwp}
- Address : {item.address} + Alamat : {item.address}
*/} - + {/* { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> */} - + {store.authentication.userData.role !== "Customer Service" && ( + + )} - + ); diff --git a/src/pages/Config/Supplier.js b/src/pages/Config/Supplier.js index 3cd403b..773dcb8 100644 --- a/src/pages/Config/Supplier.js +++ b/src/pages/Config/Supplier.js @@ -1,4 +1,4 @@ -import React, {useContext, useEffect, useState} from "react"; +import React, { useContext, useEffect, useState } from "react"; import { Button, Card, @@ -21,7 +21,7 @@ import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { SupplierComponent } from "../../component/SupplierComponent"; import { LINKS } from "../../routes/app"; -import {ModalLoaderContext} from "../../utils/modal"; +import { ModalLoaderContext } from "../../utils/modal"; const { Search } = Input; @@ -80,11 +80,13 @@ export const Supplier = observer(() => { }} onSearch={(value) => console.log(value)} /> */} - + {store.authentication.userData.role !== "Customer Service" && ( + + )} diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index 4d41f87..3d0eea6 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -48,11 +48,12 @@ export const Home = observer(() => { ? await store.membership.getData() : await store.membership.getDataBySuperior(); }; - + return (
{store.ui.mediaQuery.isDesktop && - store.authentication.userData.role === "Admin" && ( + (store.authentication.userData.role === "Admin" || + store.authentication.userData.role === "Customer Service") && ( { )} - {store.ui.mediaQuery.isMobile && - store.authentication.userData.role === "Admin" && ( + {store.ui.mediaQuery.isMobile && + (store.authentication.userData.role === "Admin" || + store.authentication.userData.role === "Customer Service") && ( { }; const columns = [ { - title: "Amount", + title: "Pengirim", + dataIndex: "sender_name", + key: "sender_name", + }, + { + title: "Nominal", dataIndex: "amount", key: "amount", render: (text) => @@ -391,8 +396,8 @@ export const DetailUser = observer(() => { Detail User { wrap={true} style={{ textAlign: "center" }} > - - - + {store.authentication.userData.role === "Admin" && ( + + + + + + )} {((store.authentication.userData.role === "Sales" && store.membership.dataDetail.is_rejected === true && store.membership.dataDetail.is_active === false) || diff --git a/src/pages/Membership/Konfirmasi.js b/src/pages/Membership/Konfirmasi.js index 516ceea..6e4f80e 100644 --- a/src/pages/Membership/Konfirmasi.js +++ b/src/pages/Membership/Konfirmasi.js @@ -113,7 +113,7 @@ export const Konfirmasi = observer(() => { ), }, { - title: "Action", + title: "Tindakan", dataIndex: "amount", key: "action", width: "10%", @@ -126,14 +126,14 @@ export const Konfirmasi = observer(() => { title: `Are you sure Accept this submission?`, icon: , okText: "Accept", - cancelText: "Cancel", + cancelText: "Batal", okType: "primary", onOk() { handleApprove(record.id); console.log(record.id); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }} @@ -152,13 +152,13 @@ export const Konfirmasi = observer(() => { title: `Are you sure Reject this submission?`, icon: , okText: "Reject", - cancelText: "Cancel", + cancelText: "Batal", okType: "primary", onOk() { handleReject(record.id); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }} @@ -315,13 +315,13 @@ export const Konfirmasi = observer(() => { title: `Are you sure Accept this submission?`, icon: , okText: "Accept", - cancelText: "Cancel", + cancelText: "Batal", okType: "primary", onOk() { handleApprove(item.id); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }} @@ -340,13 +340,13 @@ export const Konfirmasi = observer(() => { title: `Are you sure Reject this submission?`, icon: , okText: "Reject", - cancelText: "Cancel", + cancelText: "Batal", okType: "primary", onOk() { handleReject(item.id); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }} diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 23cdc47..13f13fa 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -196,7 +196,7 @@ export const Membership = observer(() => { }).format(text), }, { - title: "Action", + title: "Tindakan", key: "action", render: (text, record) => ( @@ -344,14 +344,17 @@ export const Membership = observer(() => { marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, }} /> */} - + + {store.authentication.userData.role !== "Customer Service" && ( + + )} {store.ui.mediaQuery.isDesktop && ( @@ -496,7 +499,7 @@ export const Membership = observer(() => { visible={isVisibleTopUpModal} title="Top Up Saldo" okText="Top Up" - cancelText="Cancel" + cancelText="Batal" onCancel={() => { form.resetFields(); handleCancelTransaction(); @@ -517,7 +520,7 @@ export const Membership = observer(() => {
{ form.resetFields(); onCancel(); diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js index 7b59a33..f3fb240 100644 --- a/src/pages/Payback/Payback.js +++ b/src/pages/Payback/Payback.js @@ -72,7 +72,7 @@ export const Payback = observer(() => { key: "userData_name", }, { - title: "Picture", + title: "Gambar", dataIndex: "image_prove", key: "image_prove", render: (text, record) => ( @@ -84,7 +84,7 @@ export const Payback = observer(() => { ), }, { - title: "Amount", + title: "Nominal", dataIndex: "amount", key: "amount", width: "20%", @@ -95,7 +95,7 @@ export const Payback = observer(() => { }).format(text), }, { - title: "Action", + title: "Tindakan", dataIndex: "amount", key: "action", width: "10%", @@ -108,13 +108,13 @@ export const Payback = observer(() => { title: `Are you sure Accept this submission?`, icon: , okText: "Accept", - cancelText: "Cancel", + cancelText: "Batal", okType: "primary", onOk() { handleAction(record.id, "accept"); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }} @@ -133,13 +133,13 @@ export const Payback = observer(() => { title: `Are you sure Reject this submission?`, icon: , okText: "Reject", - cancelText: "Cancel", + cancelText: "Batal", okType: "primary", onOk() { handleAction(record.id, "reject"); }, onCancel() { - console.log("Cancel"); + console.log("Batal"); }, }); }} @@ -244,7 +244,7 @@ export const Payback = observer(() => { modalLoader.setLoading(false); store.payback.visibleModalFilterPayback = false; }; - + const footerLayoutFilter = [
diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js index da2b529..43c597c 100644 --- a/src/pages/Payback/PaybackModal.js +++ b/src/pages/Payback/PaybackModal.js @@ -100,7 +100,7 @@ export const PaybackModal = ({ initialData }) => { visible={store.payback.visibleModalPayback} title={"Create a new Created"} okText={"Create"} - cancelText="Cancel" + cancelText="Batal" onCancel={handleCancel} onOk={() => { form @@ -120,7 +120,7 @@ export const PaybackModal = ({ initialData }) => { name="form_in_modal" initialValues={initialData} > - +
{ const store = useStore(); @@ -49,11 +48,13 @@ export const Category = observer(() => { - + {store.authentication.userData.role !== "Customer Service" && ( + + )} diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 0809763..3cadd9c 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -250,7 +250,7 @@ export const Product = observer(() => { visible={visibleModalUpload} title={"Upload Excel Product"} okText={"Create"} - cancelText="Cancel" + cancelText="Batal" onCancel={() => { form.resetFields(); handleCancel(); diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js index b17dcb1..d435bd5 100644 --- a/src/pages/Product/Subcategory.js +++ b/src/pages/Product/Subcategory.js @@ -55,11 +55,15 @@ export const Subcategory = observer(() => { - + {store.authentication.userData.role !== "Customer Service" && ( + + )} diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 5096b0b..c5e0e32 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -14,6 +14,7 @@ import { List, Image, Tag, + Tabs, } from "antd"; import moment from "moment"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; @@ -23,14 +24,15 @@ import { observer } from "mobx-react-lite"; import { FilterOutlined } 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 { id } = useParams(); const modalLoader = useContext(ModalLoaderContext); const [filterStart, setFilterStart] = useState([]); const [filterEnd, setFilterEnd] = useState([]); @@ -59,11 +61,16 @@ export const Profile = observer(() => { await Promise.allSettled([ store.authentication.getProfile(), store.transaction.getDataHistoryTransaction(), + store.transaction.getDataHistoryTopUpProfile( + store.authentication.profileData?.id + + ), ]); modalLoader.setLoading(false); })(); }, []); + const handleRemoveFilter = async () => { store.transaction.filterStart = null; store.transaction.filterEnd = null; @@ -172,10 +179,10 @@ export const Profile = observer(() => { } > {record.status === 1 - ? "Success" + ? "Sukses" : record.status === 0 - ? "Pending" - : "Failed"} + ? "Dalam Proses" + : "Gagal"} ); }, @@ -210,6 +217,35 @@ export const Profile = observer(() => { }, ]; + 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: "Transaction Date", + dataIndex: "transaction_date", + key: "transaction_date", + render: (text, record) => { + return ( + + {format(parseISO(record.transaction_date), "dd MMMM yyyy")} + + ); + }, + }, + ]; const styleSaldoTitle = store.ui.mediaQuery.isDesktop ? { display: "flex", @@ -240,7 +276,7 @@ export const Profile = observer(() => { - Name + Nama @@ -248,7 +284,7 @@ export const Profile = observer(() => { - Phone Number + No. Telepon @@ -268,7 +304,7 @@ export const Profile = observer(() => { {store.authentication.profileData.roles?.name} - Superior + Upline @@ -357,152 +393,267 @@ export const Profile = observer(() => { -
- - History Transaction - - - {store.ui.mediaQuery.isDesktop && ( - + + + {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.pageSizeHistoryTransaction = + page.pageSize; + store.transaction.pageHistoryTransaction = pageNumber - 1; modalLoader.setLoading(true); await store.transaction.getDataHistoryTransaction(); modalLoader.setLoading(false); - }, - pageSize: store.transaction.pageSizeHistoryTransaction, - total: store.transaction.total_dataHistoryTransaction, - current: store.transaction.pageHistoryTransaction + 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 :{" "} - { - + )} + {store.ui.mediaQuery.isMobile && ( +

+ { + console.log(page, "Page"); + console.log(pageSize, "Page size"); + store.transaction.pageSizeHistoryTransaction = + pageSize; + store.transaction.pageHistoryTransaction = page - 1; + modalLoader.setLoading(true); + await store.transaction.getDataHistoryTransaction(); + modalLoader.setLoading(false); + }, + pageSize: store.transaction.pageSizeHistoryTransaction, + total: store.transaction.total_dataHistoryTransaction, + current: store.transaction.pageHistoryTransaction + 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"} + } - > - {item.status === 1 - ? "Success" - : item.status === 0 - ? "Pending" - : "Failed"} - - } - {" "} -
- - No.Seri : {item.seri_number} - {" "} -
- - Alasan Gagal : {item.failed_reason} - {" "} -
- - IDTrx Mitra :{" "} - {item.partner_transaction_code} - {" "} -
- - Transaction Date :{" "} - {format( - parseISO(item.created_at), - "dd-MM-yyyy" - )} - {" "} -
-

-
- } - /> - - -
- ); - }} - /> - )} -
+ {" "} +
+ + No.Seri : {item.seri_number} + {" "} +
+ + Alasan Gagal : {item.failed_reason} + {" "} +
+ + IDTrx Mitra :{" "} + {item.partner_transaction_code} + {" "} +
+ + Transaction Date :{" "} + {format( + parseISO(item.created_at), + "dd-MM-yyyy" + )} + {" "} +
+

+ + } + /> + + + + ); + }} + /> + + )} + + -
{ )} { form.resetFields(); @@ -208,10 +208,10 @@ export const Product = observer(() => { handleCancel(); }} > - Cancel + Batal , , , ]} > { const { Title } = Typography; const { Option } = Select; const modalLoader = useContext(ModalLoaderContext); + const [form] = Form.useForm(); + const [visibleModalBuy, setVisibleModalBuy] = useState(false); + const [barang, setBarang] = useState({}); useEffect(() => { const init = async () => { try { modalLoader.setLoading(true); await store.transaction.getDataCategories(); + await store.transaction.getDataSubCategories(); modalLoader.setLoading(false); } catch (e) { modalLoader.setLoading(false); @@ -44,22 +50,96 @@ export const Transaction = observer(() => { init(); }, []); - const handleChangeTabs = async (key) => { + const routeData = [ + { + route: LINKS.TRANSACTION, + name: "Transaksi", + }, + ]; + + + const handleChangeTabs = async (item) => { modalLoader.setLoading(true); store.transaction.dataSubCategories = []; store.transaction.data = []; store.transaction.filterSubCategory = null; - store.transaction.filterCategory = key; + store.transaction.filterCategory = item; await store.transaction.getDataSubCategories(); modalLoader.setLoading(false); }; - const routeData = [ - { - route: LINKS.TRANSACTION, - name: "Transaksi" - }, - ]; + const handleChangeSubcategory = async (item) => { + store.transaction.filterSubCategory = item; + modalLoader.setLoading(true); + await store.transaction.getData(); + modalLoader.setLoading(false); + }; + + + const handleBuyProduct = async (data, productCode) => { + modalLoader.setLoading(true); + try { + const response = await store.transaction.buyProd({ + ...data, + productCode: productCode, + }); + + if (response.status === 201) { + message.success(response?.body?.message || "Berhasil Beli Produk"); + } else { + message.error(response?.body?.error || "Gagal Beli Produk", 3); + } + } catch (e) { + console.log("testingan"); + console.log(e.response, "testingan"); + console.log(e.result, "testingan1"); + if (e.response?.body?.error) { + message.error(e.response.body.error); + setVisibleModalBuy(false); + modalLoader.setLoading(false); + return; + } + console.log(e, "apa errornya"); + message.error("Gagal Beli Product"); + } + setVisibleModalBuy(false); + modalLoader.setLoading(false); + }; + + const handleBuyStag = async (data, productCode) => { + modalLoader.setLoading(true); + try { + const response = await store.transaction.buyProduct({ + ...data, + productCode: productCode, + }); + if (response.status === 201) { + message.success(response?.body?.message || "Berhasil Beli Produk"); + } else { + message.error(response?.body?.error || "Gagal Beli Produk", 3); + } + } catch (e) { + console.log("testingan"); + console.log(e.response, "testingan"); + console.log(e.result, "testingan1"); + if (e.response?.body?.error) { + message.error(e.response.body.error); + setVisibleModalBuy(false); + modalLoader.setLoading(false); + return; + } + console.log(e, "apa errornya"); + message.error("Gagal Beli Product"); + } + // setDataProd(false); + // setDataStag(false); + setVisibleModalBuy(false); + modalLoader.setLoading(false); + }; + const handleCancel = () => { + form.resetFields(); + setVisibleModalBuy(false); + }; return (
@@ -75,13 +155,206 @@ export const Transaction = observer(() => { Filter */} - - {store.transaction.dataCategories.map((item, index) => ( - - - - ))} - + {store.ui.mediaQuery.isDesktop && ( + + {store.transaction.dataCategories.map((item, index) => ( + + + + ))} + + )} + + {store.ui.mediaQuery.isMobile && ( +
+ + + Kategori + + + +
+ + + + + + + Sub Category + + + + + + + + + + Produk & Nominal + + + {/* */} + + + {store.transaction.data.length != 0 && ( + + {store.transaction.data.map((item, index) => ( + + { + setVisibleModalBuy(true); + setBarang(item); + }} + hoverable + style={{ + cursor: "pointer", + marginLeft: 10, + borderColor: "salmon", + height: 100, + marginBottom: 10, + }} + > + + {item?.product_name} + +
+ + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(item?.price)} + +
+ + ))} + + )} + { + form.resetFields(); + setVisibleModalBuy(false); + }} + // footer={footerLayoutFilter} + footer={[ + , + , + , + ]} + > + + + + + + + + )} ); diff --git a/src/store/transaction.js b/src/store/transaction.js index d212316..a934936 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -23,7 +23,7 @@ export class Transaction { pageSizeSubCategories = 10; dataSubCategories = []; total_dataSubCategories = 0; - filterSubCategory = null; + //filterSubCategory = null; pageHistoryTransaction = 0; pageSizeHistoryTransaction = 10; @@ -40,6 +40,9 @@ export class Transaction { dataHistoryTopUp = []; total_dataHistoryTopUp = 0; + dataHistoryTopUpProfile = []; + total_dataHistoryTopUpProfile = 0; + dataTransaction = []; dataTransactionB2B = []; dataTransactionPartner = []; @@ -165,6 +168,19 @@ export class Transaction { } } + async getDataHistoryTopUpProfile(id) { + try { + const response = await http.get( + `/transaction/history-deposit-profile?page=${this.page}&pageSize=${this.pageSize}&user-destination=${id}&start=${this.filterStart}&end=${this.filterEnd}` + ); + console.log(response,'get data history Profile') + this.dataHistoryTopUpProfile = response.body.data ?? []; + this.total_dataHistoryTopUpProfile = response?.body?.count ?? 0; + } catch (e) { + console.error(e); + } + } + async create(data) { try { const response = await http.post("/product").send(data);