diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js
index 4b0b143..cff586e 100644
--- a/src/component/ProductComponent.js
+++ b/src/component/ProductComponent.js
@@ -96,6 +96,20 @@ export const ProductComponent = observer((props) => {
),
},
+ {
+ title: "Action",
+ key: "action",
+ render: (text, record) => (
+
+ ),
+ },
];
const deleteData = async (id) => {
diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js
index 0651668..6e2c27a 100644
--- a/src/pages/App/DesktopLayout.js
+++ b/src/pages/App/DesktopLayout.js
@@ -215,12 +215,14 @@ export const DesktopLayout = observer(() => {
Payback To
+ {store.authentication.userData.role !== "Admin" && (
Payback
+ )}
{store.authentication.userData.role !== "Admin" && (
diff --git a/src/pages/Membership/DetailUser.js b/src/pages/Membership/DetailUser.js
new file mode 100644
index 0000000..c1eac3e
--- /dev/null
+++ b/src/pages/Membership/DetailUser.js
@@ -0,0 +1,148 @@
+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";
+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 DetailUser = observer(() => {
+ const store = useStore();
+ const modalLoader = useContext(ModalLoaderContext);
+
+ const routeData = [
+ {
+ route: LINKS.HOME,
+ name: "Home",
+ },
+ {
+ route: LINKS.DETAILUSER,
+ name: Detail User,
+ },
+ ];
+
+ useEffect(() => {
+ (async () => {
+ modalLoader.setLoading(true);
+ await Promise.allSettled([
+ store.authentication.getProfile(),
+ store.transaction.getDataHistoryTransaction(),
+ ]);
+ modalLoader.setLoading(false);
+ })()
+ }, []);
+
+ 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')}
+ )
+ },
+ },
+ ]
+
+ 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 (
+
+
+
+ Detail User
+
+
+
+
+ Name
+
+
+ {store.authentication.profileData?.userDetail?.name}
+
+
+ Role
+
+
+ {store.authentication.profileData?.userDetail?.phone_number}
+
+
+ Saldo Supplier
+
+
+ {store.authentication.profileData?.username}
+
+
+ Saldo System
+
+
+ {store.authentication.profileData.roles?.name}
+
+
+ Status
+
+
+ {store.authentication.profileData.superior?.username}
+
+
+
+ \
+
+
+ Saldo
+
+
+ {store.authentication.profileData?.wallet}
+
+
+
+
+
+
+
+
History User Transaction
+
+
+
+
+
+
+
+
+
+ )
+});
diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js
index f241859..8a4cd62 100644
--- a/src/pages/Membership/Membership.js
+++ b/src/pages/Membership/Membership.js
@@ -1,16 +1,37 @@
-import React, {useContext, useEffect, useState} from "react";
-import {Button, Card, Col, Divider, Form, Input, List, message, Modal, Row, Select, Space, Table, Tag,} from "antd";
-import {useStore} from "../../utils/useStore";
-import {observer} from "mobx-react-lite";
-import {DownloadOutlined, ExclamationCircleOutlined, PlusSquareOutlined,} from "@ant-design/icons";
-import {MembershipModal} from "./MembershipModal";
-import {BreadcumbComponent} from "../../component/BreadcumbComponent";
-import {LINKS} from "../../routes/app";
-import {ModalLoaderContext} from "../../utils/modal";
+import React, { useContext, useEffect, useState } from "react";
+import {
+ Button,
+ Card,
+ Col,
+ Divider,
+ Form,
+ Input,
+ List,
+ message,
+ Modal,
+ Row,
+ Select,
+ Space,
+ Table,
+ Tag,
+} from "antd";
+import { useStore } from "../../utils/useStore";
+import { observer } from "mobx-react-lite";
+import {
+ DownloadOutlined,
+ ExclamationCircleOutlined,
+ PlusSquareOutlined,
+} from "@ant-design/icons";
+import { MembershipModal } from "./MembershipModal";
+import { BreadcumbComponent } from "../../component/BreadcumbComponent";
+import { LINKS } from "../../routes/app";
+import { Link,useHistory } from "react-router-dom";
+import { ModalLoaderContext } from "../../utils/modal";
-const {Search} = Input;
-const {Option} = Select;
+const { Search } = Input;
+const { Option } = Select;
export const Membership = observer(() => {
+ const history = useHistory();
const [form] = Form.useForm();
const store = useStore();
const [visibleModal, setVisibleModal] = useState(false);
@@ -117,36 +138,34 @@ export const Membership = observer(() => {
dataIndex: ["coa", "amount"],
key: ["coa", "amount"],
width: "20%",
- render: (text) => (
- new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
- }).format(text)
- )
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: "Saldo di System",
dataIndex: ["coa_undistribute", "amount"],
key: ["coa_undistribute", "amount"],
width: "20%",
- render: (text) => (
- new Intl.NumberFormat("id-ID", {
- style: "currency",
- currency: "IDR",
- }).format(text)
- )
+ render: (text) =>
+ new Intl.NumberFormat("id-ID", {
+ style: "currency",
+ currency: "IDR",
+ }).format(text),
},
{
title: "Status",
dataIndex: "isActive",
key: "isActive",
render: (text, record) => (
-
- {record?.isActive === true ? " ACTIVE" : "INACTIVE"}
-
+
+ {record?.isActive === true ? " ACTIVE" : "INACTIVE"}
+
),
},
{
@@ -167,7 +186,7 @@ export const Membership = observer(() => {
setIsVisibleTopUpModal(true);
}}
>
- Top Up Saldo
+ Top Up Saldo
- {/* */}
+ >
+ Detail
+
),
},
@@ -218,7 +238,7 @@ export const Membership = observer(() => {
},
{
route: "/app/membership",
- name: Membership,
+ name: Membership,
},
];
@@ -264,42 +284,42 @@ export const Membership = observer(() => {
}
};
- const handleDelete = (record) => {
- Modal.confirm({
- title: "Are you sure delete this record?",
- icon: ,
- okText: "Yes",
- okType: "primary",
- cancelText: "Cancel",
- async onOk() {
- try {
- //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya
- await store.membership.delete(record);
- message.success("Success Delete Data");
- await getData();
- } catch (e) {
- message.error("Failed Delete Data");
- }
- },
- onCancel() {
- console.log("Cancel");
- },
- });
+ const handleDetail = (record) => {
+ // Modal.confirm({
+ // title: "Are you sure delete this record?",
+ // icon: ,
+ // okText: "Yes",
+ // okType: "primary",
+ // cancelText: "Cancel",
+ // async onOk() {
+ // try {
+ // //TODO: minta apinya ke ka ilham ya, jangan di uncomment kalo pake api reconcile, nanti beneran ke apus datanya
+ // await store.membership.delete(record);
+ // message.success("Success Delete Data");
+ // await getData();
+ // } catch (e) {
+ // message.error("Failed Delete Data");
+ // }
+ // },
+ // onCancel() {
+ // console.log("Cancel");
+ // },
+ // });
};
return (
-
+
-
+
{/* */}
-
+
{
setVisibleModal(true);
}}
>
- New
+ New
@@ -358,10 +378,10 @@ export const Membership = observer(() => {
pageSize: store.membership.pageSize,
total: store.membership.total_data,
current: store.membership.page,
- style: {marginBottom: "1rem", marginRight: "1rem"},
+ style: { marginBottom: "1rem", marginRight: "1rem" },
}}
dataSource={store.membership.data}
- style={{padding: 0}}
+ style={{ padding: 0 }}
renderItem={(item) => {
return (
@@ -383,12 +403,12 @@ export const Membership = observer(() => {
description={
- Username : {item.username}
+ Username : {item.username}
}
/>
-
);
}}
@@ -433,7 +453,7 @@ export const Membership = observer(() => {