@@ -368,12 +380,12 @@ export const Membership = observer(() => {
description={
- Username : {item.username}
+ Username : {item.username}
}
/>
-
);
}}
@@ -415,25 +427,25 @@ export const Membership = observer(() => {
}}
>
-
-
+
+
+
-
+
diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js
index df67074..92faaef 100644
--- a/src/pages/Membership/MembershipModal.js
+++ b/src/pages/Membership/MembershipModal.js
@@ -11,7 +11,6 @@ export const MembershipModal = ({
}) => {
const [form] = Form.useForm();
const { Option } = Select;
- const dataStatus = ["true", "false"];
const store = useStore();
return (
diff --git a/src/pages/Payback/Payback.js b/src/pages/Payback/Payback.js
index 34f9b4c..ba1a29f 100644
--- a/src/pages/Payback/Payback.js
+++ b/src/pages/Payback/Payback.js
@@ -1,4 +1,4 @@
-import React, { useState ,useEffect} from "react";
+import React, {useState, useEffect, useContext} from "react";
import {
Button,
Card,
@@ -12,42 +12,37 @@ import {
Space,
Table,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { observer } from "mobx-react-lite";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
import {
CheckCircleOutlined,
CloseOutlined,
FilterOutlined,
PlusSquareOutlined,
} from "@ant-design/icons";
-import { PaybackModal } from "./PaybackModal";
-import { BreadcumbComponent } from "../../component/BreadcumbComponent";
-import { LINKS } from "../../routes/app";
+import {PaybackModal} from "./PaybackModal";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {LINKS} from "../../routes/app";
+import {ModalLoaderContext} from "../../utils/modal";
-const { Search } = Input;
+const {Search} = Input;
export const Payback = observer(() => {
const store = useStore();
- const [visibleModal, setVisibleModal] = useState(false);
- const [confirmLoading, setConfirmLoading] = useState(false);
- const [initialData, setInitialData] = useState({});
- //const [confirmLoading, setConfirmLoading] = useState(false);
- const [isLoading, setIsLoading] = useState(false);
-
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
- const init = async () => {
- try {
- setIsLoading(true);
- await store.payback.getDataUser();
- //await store.role.getData();
- setIsLoading(false);
- } catch (e) {
- setIsLoading(false);
- }
- };
-
- init();
+ const init = async () => {
+ try {
+ modalLoader.setLoading(true);
+ await store.payback.getDataUser();
+ modalLoader.setLoading(false);
+ } catch (e) {
+ modalLoader.setLoading(false);
+ }
+ };
+
+ init();
}, []);
@@ -64,7 +59,7 @@ export const Payback = observer(() => {
render: (text, record) => (
@@ -85,7 +80,7 @@ export const Payback = observer(() => {
onClick={async () => {
await handleAction(record, "accept");
}}
- icon={
}
+ icon={
}
style={{
backgroundColor: "#1bb91d",
color: "#fff",
@@ -98,7 +93,7 @@ export const Payback = observer(() => {
onClick={async () => {
await handleAction(record, "reject");
}}
- icon={
}
+ icon={
}
style={{
backgroundColor: "#ff1c1c",
color: "#fff",
@@ -112,7 +107,7 @@ export const Payback = observer(() => {
},
];
- if(store.authentication.userData.role === "Retail") columns.pop();
+ if (store.authentication.userData.role === "Retail") columns.pop();
const routeData = [
{
@@ -121,12 +116,12 @@ export const Payback = observer(() => {
},
{
route: LINKS.PAYBACK,
- name:
Payback,
+ name:
Payback,
},
];
const onSubmit = async (data) => {
- setConfirmLoading(true);
+ modalLoader.setLoading(true);
try {
// await store.membership.create(data);
// message.success("Success Add New Member");
@@ -135,25 +130,25 @@ export const Payback = observer(() => {
console.error(e, "apa errornya");
message.error("Failed Add Member");
}
- setConfirmLoading(false);
- setVisibleModal(false);
+ modalLoader.setLoading(false);
};
- const handleAction = async (record, type) => {};
+ const handleAction = async (record, type) => {
+ };
return (
-
+
-
+
-
+
{
marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0,
}}
/>
- {store.authentication.userData.role !== "Admin" && (
+ {/* {store.authentication.userData.role !== "Admin" && (
- )}
+ )} */}
{store.ui.mediaQuery.isDesktop && (
@@ -215,7 +210,7 @@ export const Payback = observer(() => {
// style: {marginBottom: "1rem", marginRight: "1rem"},
// }}
dataSource={store.payback.data}
- style={{ padding: 0 }}
+ style={{padding: 0}}
renderItem={(item) => {
return (
@@ -236,11 +231,11 @@ export const Payback = observer(() => {
title={item.name}
description={
-
+
}
/>
-
);
}}
@@ -260,7 +255,7 @@ export const Payback = observer(() => {
- {
setInitialData({});
setVisibleModal(false);
}}
- />
+ /> */}
);
});
diff --git a/src/pages/Payback/PaybackFromUser.js b/src/pages/Payback/PaybackFromUser.js
index 94077a1..1e66284 100644
--- a/src/pages/Payback/PaybackFromUser.js
+++ b/src/pages/Payback/PaybackFromUser.js
@@ -1,4 +1,4 @@
-import React, { useState ,useEffect} from "react";
+import React, {useState, useEffect, useContext} from "react";
import {
Button,
Card,
@@ -12,59 +12,52 @@ import {
Space,
Table,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { observer } from "mobx-react-lite";
+import {useStore} from "../../utils/useStore";
+import {observer} from "mobx-react-lite";
import {
CheckCircleOutlined,
CloseOutlined,
FilterOutlined,
PlusSquareOutlined,
} from "@ant-design/icons";
-import { PaybackModal } from "./PaybackModal";
-import { BreadcumbComponent } from "../../component/BreadcumbComponent";
-import { LINKS } from "../../routes/app";
+import {PaybackModal} from "./PaybackModal";
+import {BreadcumbComponent} from "../../component/BreadcumbComponent";
+import {LINKS} from "../../routes/app";
+import {ModalLoaderContext} from "../../utils/modal";
-const { Search } = Input;
+const {Search} = Input;
export const PaybackFromUser = observer(() => {
const store = useStore();
const [visibleModal, setVisibleModal] = useState(false);
- const [confirmLoading, setConfirmLoading] = useState(false);
const [initialData, setInitialData] = useState({});
- //const [confirmLoading, setConfirmLoading] = useState(false);
- const [isLoading, setIsLoading] = useState(false);
-
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
- const init = async () => {
- try {
- setIsLoading(true);
- await store.payback.getData();
- //await store.role.getData();
- setIsLoading(false);
- } catch (e) {
- setIsLoading(false);
- }
- };
-
- init();
+ const init = async () => {
+ try {
+ modalLoader.setLoading(true);
+ await store.payback.getData();
+ await store.authentication.getProfile();
+ modalLoader.setLoading(false);
+ } catch (e) {
+ modalLoader.setLoading(false);
+ }
+ };
+
+ init();
}, []);
const columns = [
- // {
- // title: "Name",
- // dataIndex: "name",
- // key: "name",
- // },
{
title: "Picture",
dataIndex: "image_prove",
key: "image_prove",
render: (text, record) => (
@@ -75,6 +68,41 @@ export const PaybackFromUser = observer(() => {
dataIndex: "amount",
key: "amount",
},
+ {
+ title: "Action",
+ dataIndex: "amount",
+ key: "action",
+ render: (text, record) => (
+
+
+
+
+ ),
+ },
// {
// title: "Action",
// key: "action",
@@ -112,8 +140,6 @@ export const PaybackFromUser = observer(() => {
// },
];
- if(store.authentication.userData.role === "Retail") columns.pop();
-
const routeData = [
{
route: LINKS.HOME,
@@ -121,12 +147,12 @@ export const PaybackFromUser = observer(() => {
},
{
route: LINKS.PAYBACKFROMUSER,
- name: Payback User,
+ name: Payback User,
},
];
const onSubmit = async (data) => {
- setConfirmLoading(true);
+ modalLoader.setLoading(true);
try {
// await store.membership.create(data);
// message.success("Success Add New Member");
@@ -135,25 +161,26 @@ export const PaybackFromUser = observer(() => {
console.error(e, "apa errornya");
message.error("Failed Add Member");
}
- setConfirmLoading(false);
+ modalLoader.setLoading(false);
setVisibleModal(false);
};
- const handleAction = async (record, type) => {};
+ const handleAction = async (record, type) => {
+ };
return (
-
+
-
+
-
+
{
setVisibleModal(true);
}}
>
- New
+ New
)}
@@ -181,21 +208,21 @@ export const PaybackFromUser = observer(() => {
columns={columns}
dataSource={store.payback.data}
bordered
- // pagination={{
- // pageSize: store.membership.pageSize,
- // total: store.membership.total_data,
- // current: store.membership.page + 1,
- // showSizeChanger: true,
- // simple: false
- // }}
- // onChange={async (page) => {
- // let pageNumber = page.current;
- // store.membership.pageSize = page.pageSize;
- // store.membership.page = pageNumber - 1;
- // // store.membership.isLoading = true;
- // await store.membership.getData();
- // // store.membership.isLoading = false;
- // }}
+ pagination={{
+ pageSize: store.payback.pageSize,
+ total: store.payback.total_data,
+ current: store.payback.page + 1,
+ showSizeChanger: true,
+ simple: false
+ }}
+ onChange={async (page) => {
+ let pageNumber = page.current;
+ store.payback.pageSize = page.pageSize;
+ store.payback.page = pageNumber - 1;
+ modalLoader.setLoading(true);
+ await store.payback.getData();
+ modalLoader.setLoading(false);
+ }}
/>
)}
@@ -203,19 +230,21 @@ export const PaybackFromUser = observer(() => {
{
- // store.membership.pageSize = page.pageSize;
- // store.membership.page = page.current;
- // store.membership.getData();
- // },
- // pageSize: store.membership.pageSize,
- // total: store.membership.total_data,
- // current: store.membership.page,
- // style: {marginBottom: "1rem", marginRight: "1rem"},
- // }}
+ pagination={{
+ onChange: async (page) => {
+ store.payback.pageSize = page.pageSize;
+ store.payback.page = page.current;
+ modalLoader.setLoading(true);
+ await store.payback.getData();
+ modalLoader.setLoading(false);
+ },
+ pageSize: store.payback.pageSize,
+ total: store.payback.total_data,
+ current: store.payback.page,
+ style: {marginBottom: "1rem", marginRight: "1rem"},
+ }}
dataSource={store.payback.data}
- style={{ padding: 0 }}
+ style={{padding: 0}}
renderItem={(item) => {
return (
@@ -236,11 +265,11 @@ export const PaybackFromUser = observer(() => {
title={item.name}
description={
-
+
}
/>
-
);
}}
@@ -262,7 +291,6 @@ export const PaybackFromUser = observer(() => {
{
await onSubmit(data);
diff --git a/src/pages/Payback/PaybackModal.js b/src/pages/Payback/PaybackModal.js
index dc87207..e87f74d 100644
--- a/src/pages/Payback/PaybackModal.js
+++ b/src/pages/Payback/PaybackModal.js
@@ -1,4 +1,4 @@
-import React, { useState, useEffect } from "react";
+import React, {useState, useEffect, useContext} from "react";
import {
Button,
Form,
@@ -8,36 +8,22 @@ import {
Modal,
Upload,
} from "antd";
-import { useStore } from "../../utils/useStore";
-import { appConfig } from "../../config/app";
-import { LoadingOutlined, UploadOutlined } from "@ant-design/icons";
+import {useStore} from "../../utils/useStore";
+import {appConfig} from "../../config/app";
+import {LoadingOutlined, UploadOutlined} from "@ant-design/icons";
+import {ModalLoaderContext} from "../../utils/modal";
-export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
+export const PaybackModal = ({visible, onCreate, onCancel, initialData}) => {
const [form] = Form.useForm();
const store = useStore();
const [fileList, setFileList] = useState([]);
const [previewTitle, setPreviewTitle] = useState("");
const [previewImage, setPreviewImage] = useState("");
- const [loading, setLoading] = useState(false);
const [fileUrl, setFileUrl] = useState("");
const firstIndexFileList = fileList[0];
- const [isLoading, setIsLoading] = useState(false);
+ const [loading, setLoading] = useState(false);
+ const modalLoader = useContext(ModalLoaderContext);
- useEffect(() => {
- const init = async () => {
- try {
- setIsLoading(true);
- //await store.membership.getData();
- //await store.role.getData();
- await store.authentication.getProfile();
- setIsLoading(false);
- } catch (e) {
- setIsLoading(false);
- }
- };
-
- init();
- }, []);
const beforeUpload = (file) => {
let isPdf, isLt2M;
let allowedFile = ["image/jpeg", "image/png", "application/pdf"];
@@ -58,7 +44,7 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
setPreviewTitle(file.url?.substring(file.url?.lastIndexOf("/") + 1));
};
- const handleChange = ({ fileList }) => {
+ const handleChange = ({fileList}) => {
setFileList(fileList);
if (fileList.length && fileList[0].status === "done") {
form.setFieldsValue({
@@ -74,9 +60,9 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
const uploadButton = (
{loading ? (
-
+
) : (
- }>Click to Upload
+
)}
);
@@ -92,14 +78,16 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
const handleSubmit = async (data) => {
console.log(data, "isi data2");
try {
+ modalLoader.setLoading(true);
await store.payback.create(data);
- message.success("Success Add New Member");
+ modalLoader.setLoading(false);
+ message.success("Success Add Payback");
+ await store.payback.getData();
} catch (e) {
+ modalLoader.setLoading(false);
console.log(e, "apa errornya");
message.error("Failed Add Member");
}
-
- store.payback.visibleModalPayback = false;
form.resetFields();
};
@@ -135,15 +123,14 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
-
+
{
beforeUpload={beforeUpload}
onPreview={handlePreview}
onChange={handleChange}
- defaultValue={"tes"}
>
{!firstIndexFileList ? uploadButton : null}
@@ -182,7 +168,7 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
{previewTitle}
@@ -196,9 +182,9 @@ export const PaybackModal = ({ visible, onCreate, onCancel, initialData }) => {
-
+
diff --git a/src/pages/Product/Category.js b/src/pages/Product/Category.js
index e3271e0..fee1dba 100644
--- a/src/pages/Product/Category.js
+++ b/src/pages/Product/Category.js
@@ -1,4 +1,4 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {Button, Card, Col, Input, Row, Tabs} from "antd";
import {FilterOutlined, PlusSquareOutlined} from "@ant-design/icons";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
@@ -6,22 +6,23 @@ import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {LINKS} from "../../routes/app";
import {CategoryComponent} from "../../component/CategoryComponent";
+import {ModalLoaderContext} from "../../utils/modal";
const {TabPane} = Tabs;
const {Search} = Input;
export const Category = observer(() => {
- const [isLoading, setIsLoading] = useState(false);
const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
+ modalLoader.setLoading(true);
await store.category.getData();
- setIsLoading(false);
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
diff --git a/src/pages/Product/Subcategory.js b/src/pages/Product/Subcategory.js
index 663e4ac..edfa0ae 100644
--- a/src/pages/Product/Subcategory.js
+++ b/src/pages/Product/Subcategory.js
@@ -1,4 +1,4 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {Button, Card, Col, Input, Row} from "antd";
import {PlusSquareOutlined} from "@ant-design/icons";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
@@ -6,21 +6,22 @@ import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {LINKS} from "../../routes/app";
import {SubcategoryComponent} from "../../component/Subcategory";
+import {ModalLoaderContext} from "../../utils/modal";
const {Search} = Input;
export const Subcategory = observer(() => {
- const [isLoading, setIsLoading] = useState(false);
const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
- getData();
- setIsLoading(false);
+ modalLoader.setLoading(true);
+ await getData();
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
@@ -39,22 +40,22 @@ export const Subcategory = observer(() => {
},
{
route: LINKS.SUBCATEGORY,
- name: Sub Category,
+ name: Sub Category,
},
];
return (
-
+
-
+
{/* */}
-
+
{
-
+
);
diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js
index a0aa58e..1096b36 100644
--- a/src/pages/Profile/Profile.js
+++ b/src/pages/Profile/Profile.js
@@ -1,4 +1,4 @@
-import React, {useEffect} from "react";
+import React, {useContext, useEffect} from "react";
import {Button, Card, Col, Row, Table, Typography} from "antd";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {LINKS} from "../../routes/app";
@@ -6,138 +6,143 @@ import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite";
import {FilterOutlined} from "@ant-design/icons";
import {format, parseISO} from "date-fns";
+import {ModalLoaderContext} from "../../utils/modal";
const {Title, Text} = Typography;
export const Profile = observer(() => {
- const store = useStore();
- const routeData = [
- {
- route: LINKS.HOME,
- name: "Home",
- },
- {
- route: LINKS.PROFILE,
- name: Profile,
- },
- ];
+ const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
- useEffect(() => {
- (async () => {
- await Promise.allSettled([
- store.authentication.getProfile(),
- store.transaction.getDataHistoryTransaction(),
- ]);
- })()
- }, []);
+ const routeData = [
+ {
+ route: LINKS.HOME,
+ name: "Home",
+ },
+ {
+ route: LINKS.PROFILE,
+ name: Profile,
+ },
+ ];
- const columns = [
- {
- title: 'Markup Price',
- dataIndex: 'mark_up_price',
- key: 'mark_up_price',
- width: '20%',
- },
- {
- title: 'Name',
- dataIndex: 'name',
- key: 'name',
- width: '50%',
- },
- {
- title: 'Transaction Date',
- dataIndex: 'created_at',
- key: 'created_at',
- render: (text, record) => {
- return (
- {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')}
- )
- },
- },
- ]
+ useEffect(() => {
+ (async () => {
+ modalLoader.setLoading(true);
+ await Promise.allSettled([
+ store.authentication.getProfile(),
+ store.transaction.getDataHistoryTransaction(),
+ ]);
+ modalLoader.setLoading(false);
+ })()
+ }, []);
- 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 columns = [
+ {
+ title: 'Markup Price',
+ dataIndex: 'mark_up_price',
+ key: 'mark_up_price',
+ width: '20%',
+ },
+ {
+ title: 'Name',
+ dataIndex: 'name',
+ key: 'name',
+ width: '50%',
+ },
+ {
+ title: 'Transaction Date',
+ dataIndex: 'created_at',
+ key: 'created_at',
+ render: (text, record) => {
+ return (
+ {format(parseISO(record.created_at), 'dd MMMM yyyy HH:mm')}
+ )
+ },
+ },
+ ]
- return (
-
-
-
- Profile
-
-
-
-
- Name
-
-
- {store.authentication.profileData?.userDetail?.name}
-
-
- Phone Number
-
-
- {store.authentication.profileData?.userDetail?.phone_number}
-
-
- Username
-
-
- {store.authentication.profileData?.username}
-
-
- Role
-
-
- {store.authentication.profileData.roles?.name}
-
-
- Superior
-
-
- {store.authentication.profileData.superior?.username}
-
-
-
-
-
-
- Saldo
-
-
- {store.authentication.profileData?.wallet}
-
-
-
-
-
-
-
-
History User Transaction
+ 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;
-
-
-
-
-
-
-
-
- )
+ return (
+
+
+
+ Profile
+
+
+
+
+ Name
+
+
+ {store.authentication.profileData?.userDetail?.name}
+
+
+ Phone Number
+
+
+ {store.authentication.profileData?.userDetail?.phone_number}
+
+
+ Username
+
+
+ {store.authentication.profileData?.username}
+
+
+ Role
+
+
+ {store.authentication.profileData.roles?.name}
+
+
+ Superior
+
+
+ {store.authentication.profileData.superior?.username}
+
+
+
+
+
+
+ Saldo
+
+
+ {store.authentication.profileData?.wallet}
+
+
+
+
+
+
+
+
History User Transaction
+
+
+
+
+
+
+
+
+
+ )
});
diff --git a/src/pages/Transaction/Product.js b/src/pages/Transaction/Product.js
index 7e7884d..6e5f103 100644
--- a/src/pages/Transaction/Product.js
+++ b/src/pages/Transaction/Product.js
@@ -1,8 +1,9 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {useStore} from "../../utils/useStore";
import {Button, Card, Col, Input, message, Modal, Row, Select} from "antd";
import {observer} from "mobx-react-lite";
import {MoneyCollectOutlined} from "@ant-design/icons";
+import {ModalLoaderContext} from "../../utils/modal";
const {Search} = Input;
const {Option} = Select;
@@ -10,133 +11,139 @@ const {Option} = Select;
export const Product = observer(() => {
const store = useStore();
- const [isLoading, setIsLoading] = useState(false);
const [productData, setProductData] = useState([]);
+ const modalLoader = useContext(ModalLoaderContext);
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
- await store.transaction.getDataSubCategories();
- await store.transaction.getDataCategories();
- setIsLoading(false);
+ modalLoader.setLoading(true);
+ await Promise.allSettled([
+ store.transaction.getDataSubCategories(),
+ store.transaction.getDataCategories()
+ ])
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
- init();
+ init();
}, []);
- // data
- useEffect(() => {
- console.log("⚡ transaction data store", store.transaction.data);
- setProductData(store.transaction.data);
- }, [store.transaction.data]);
+ // data
+ useEffect(() => {
+ console.log("⚡ transaction data store", store.transaction.data);
+ setProductData(store.transaction.data);
+ }, [store.transaction.data]);
- // Subcategory
- useEffect(() => {
- console.log(
- "⚡ transaction subcategory store",
- store.transaction.dataSubCategories
- );
- }, [store.transaction.dataSubCategories]);
+ // Subcategory
+ useEffect(() => {
+ console.log(
+ "⚡ transaction subcategory store",
+ store.transaction.dataSubCategories
+ );
+ }, [store.transaction.dataSubCategories]);
- const handleChangeSubcategory = async (item) => {
- store.transaction.filterSubCategory = item;
- await store.transaction.getData();
- };
+ const handleChangeSubcategory = async (item) => {
+ store.transaction.filterSubCategory = item;
+ modalLoader.setLoading(true);
+ await store.transaction.getData();
+ modalLoader.setLoading(false);
+ };
- const handleBuyProduct = async (data) => {
- try {
- const response = await store.transaction.buyProduct({productCode: data});
- if (response.status === 200) {
- message.success("Success Buy Product");
- } else {
- message.error("Failed Buy Product");
- }
- } catch (e) {
- console.log(e, "apa errornya");
- message.error("Failed Buy Product");
- }
- };
+ const handleBuyProduct = async (data) => {
+ modalLoader.setLoading(true);
+ try {
+ const response = await store.transaction.buyProduct({productCode: data});
+ // if (response.status === 200) {
+ message.success("Success Buy Product");
+ // } else {
+ //message.error("Failed Buy Product");
+ //}
+ } catch (e) {
+ console.log(e, "apa errornya");
+ message.error("Failed Buy Product");
+ }
+ modalLoader.setLoading(false);
+ };
- return (
-
-
- Sub Category
-
-
-
-
-
-
-
-
- Produk & Nominal
-
-
-
-
-
- {productData.length != 0 && (
-
- {productData.map((item, index) => (
-
- {
- Modal.confirm({
- title: `Are you sure buy ${item.name}?`,
- icon: ,
- okText: "Confirm",
- cancelText: "Cancel",
- okType: "primary",
- onOk() {
- handleBuyProduct(item.code)
- },
- onCancel() {
- console.log("Cancel");
- },
- });
- }}
- style={{cursor: "pointer"}}
- >
- {item.name}
-
-
+ return (
+
+
+ Sub Category
+
+
+
+
+
+
+
+
+ Produk & Nominal
+
+
+
+
+
+ {productData.length != 0 && (
+
+ {productData.map((item, index) => (
+
+ {
+ Modal.confirm({
+ title: `Are you sure buy ${item.name}?`,
+ icon: ,
+ okText: "Confirm",
+ cancelText: "Cancel",
+ okType: "primary",
+ onOk() {
+ handleBuyProduct(item.code)
+ },
+ onCancel() {
+ console.log("Cancel");
+ },
+ });
+ }}
+ style={{cursor: "pointer"}}
+ >
+ {item.name}
+
+
{new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
+ style: "currency",
+ currency: "IDR",
}).format(item?.currentPrice?.mark_up_price)}
-
-
- ))}
+
+
+ ))}
)}
{productData.length !== 0 && (
-
+
diff --git a/src/pages/Transaction/Transaction.js b/src/pages/Transaction/Transaction.js
index 1b0d0ec..978d6b9 100644
--- a/src/pages/Transaction/Transaction.js
+++ b/src/pages/Transaction/Transaction.js
@@ -1,27 +1,28 @@
-import React, {useEffect, useState} from "react";
+import React, {useContext, useEffect, useState} from "react";
import {useStore} from "../../utils/useStore";
import {Card, Tabs} from "antd";
import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {Product} from "./Product";
import {LINKS} from "../../routes/app";
import {observer} from "mobx-react-lite";
+import {ModalLoaderContext} from "../../utils/modal";
const {TabPane} = Tabs;
export const Transaction = observer(() => {
const store = useStore();
- const [isLoading, setIsLoading] = useState(false);
+ const modalLoader = useContext(ModalLoaderContext);
// Init
useEffect(() => {
const init = async () => {
try {
- setIsLoading(true);
+ modalLoader.setLoading(true);
await store.transaction.getDataCategories();
- setIsLoading(false);
+ modalLoader.setLoading(false);
} catch (e) {
- setIsLoading(false);
+ modalLoader.setLoading(false);
}
};
@@ -35,7 +36,9 @@ export const Transaction = observer(() => {
const handleChangeTabs = async (key) => {
store.transaction.filterCategory = key;
+ modalLoader.setLoading(true);
await store.transaction.getDataSubCategories();
+ modalLoader.setLoading(false);
};
const routeData = [
@@ -50,22 +53,22 @@ export const Transaction = observer(() => {
];
return (
-
-
-
-
- {store.transaction.dataCategories.map((item, index) => (
-
-
-
- ))}
+
+
+
+
+ {store.transaction.dataCategories.map((item, index) => (
+
+
+
+ ))}
-
-
-
+
+
+
);
});
diff --git a/src/store/authentication.js b/src/store/authentication.js
index 9a98b01..0edda9e 100644
--- a/src/store/authentication.js
+++ b/src/store/authentication.js
@@ -34,7 +34,7 @@ export class Authentication {
try {
const result = await http.post('/auth/login').send({username, password});
-
+
TokenUtil.setAccessToken(result.body.access_token);
TokenUtil.persistToken();
runInAction(() => {
diff --git a/src/store/payback.js b/src/store/payback.js
index c616825..adbc4f4 100644
--- a/src/store/payback.js
+++ b/src/store/payback.js
@@ -9,15 +9,15 @@ export class Payback {
filterCategory = null;
visibleModalPayback = false;
- pageCategories = 0;
- pageSizeCategories = 10;
- dataCategories = [];
- total_dataCategories = 0;
+ pagePayback = 0;
+ pageSizePayback = 10;
+ dataPayback = [];
+ total_dataPayback = 0;
- pageSubCategories = 0;
- pageSizeSubCategories = 10;
- dataSubCategories = [];
- total_dataSubCategories = 0;
+ pageSubPayback = 0;
+ pageSizeSubPayback = 10;
+ dataSubPayback = [];
+ total_dataPayback = 0;
constructor(ctx) {
this.ctx = ctx;
@@ -31,12 +31,12 @@ export class Payback {
);
//console.log(response)
this.data =
- response.body[0].map((item, idx) => {
+ response.body.data.map((item, idx) => {
item.key = idx;
return item;
}) ?? [];
- this.total_data = response?.body?.count ?? 0;
+ this.total_data = response.body.count ?? 0;
} catch (e) {
console.error(e);
}
@@ -47,14 +47,14 @@ export class Payback {
const response = await http.get(
`/transaction/deposit-return/confirmation?page=${this.page}&pageSize=${this.pageSize}`
);
- console.log(response);
+ //console.log(response);
this.data =
- response.body[0].map((item, idx) => {
+ response.body.data.map((item, idx) => {
item.key = idx;
return item;
}) ?? [];
- this.total_data = response?.body?.count ?? 0;
+ this.total_data = response.body.count ?? 0;
} catch (e) {
console.error(e);
}