From bf3e66b5b57d46e1ff599ccee5191438ed2100e4 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 30 Dec 2021 12:28:53 +0700 Subject: [PATCH 1/9] Hit Api Total Transaksi --- src/pages/Home/Home.js | 237 ++++++++++++++++++++++++++++++++++- src/pages/Profile/Profile.js | 28 ++--- src/store/authentication.js | 2 + src/store/transaction.js | 14 +++ 4 files changed, 259 insertions(+), 22 deletions(-) diff --git a/src/pages/Home/Home.js b/src/pages/Home/Home.js index b3b80d6..696969b 100644 --- a/src/pages/Home/Home.js +++ b/src/pages/Home/Home.js @@ -1,14 +1,96 @@ -import React from "react"; -import { Button, PageHeader, Card, Row, Col } from "antd"; -import { store } from "../../utils/useStore"; +import React, { useContext, useEffect } from "react"; +import { Button, PageHeader, Card, Row, Col, message, Table } from "antd"; +import { useStore } from "../../utils/useStore"; import { observer } from "mobx-react-lite"; import { DropboxOutlined, DollarCircleOutlined, BarChartOutlined, } from "@ant-design/icons"; +import { ModalLoaderContext } from "../../utils/modal"; export const Home = observer(() => { + const modalLoader = useContext(ModalLoaderContext); + const store = useStore(); + useEffect(() => { + const init = async () => { + try { + modalLoader.setLoading(true); + const isAdmin = store.authentication.userData.role === "Admin"; + await getData(); + await store.membership.getDataBySuperior(); + await store.partner.getData(); + await store.transaction.getDataTransaction(); + await store.role.getData(isAdmin); + modalLoader.setLoading(false); + } catch (e) { + console.error(e); + modalLoader.setLoading(false); + if (e.response?.body?.message) { + message.error(e.response.body.message); + return; + } + message.error(e.message); + } + }; + + init(); + }, []); + const getData = async () => { + store.authentication.userData.role === "Admin" + ? await store.membership.getData() + : await store.membership.getDataBySuperior(); + }; + const columns = [ + { + title: "Name", + dataIndex: "name", + key: "name", + render: (text, record) => record?.name ?? record?.username, + }, + { + title: "Role", + dataIndex: "roleName", + key: "role", + }, + { + title: "Saldo", + dataIndex: ["coa", "amount"], + key: ["coa", "amount"], + width: "20%", + render: (text) => + new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(text), + }, + // { + // title: "Action", + // key: "action", + // render: (text, record) => ( + // + // + // + // + // ), + // }, + ]; return (
{store.ui.mediaQuery.isDesktop && ( @@ -32,7 +114,9 @@ export const Home = observer(() => { Total Transaksi}> - Total Transaksi : 25 Transaksi +

+

{store.transaction.dataTransaction} Transaksi

+

@@ -84,6 +168,78 @@ export const Home = observer(() => { )} + {store.authentication.userData.role === "Admin" && + store.ui.mediaQuery.isDesktop && ( + + + { + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + + )} {store.ui.mediaQuery.isMobile && (
{ Total Transaksi}> - Total Transaksi : 25 Transaksi +

+

{store.transaction.dataTransaction} Transaksi

+

@@ -152,6 +310,75 @@ export const Home = observer(() => {
)} + {store.authentication.userData.role === "Admin" && + store.ui.mediaQuery.isMobile && ( + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + +
{ + let pageNumber = page.current; + store.membership.pageSize = page.pageSize; + store.membership.page = pageNumber - 1; + modalLoader.setLoading(true); + await getData(); + modalLoader.setLoading(false); + }} + /> + + + )} ); }); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 58017d7..f079a0b 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -120,9 +120,9 @@ export const Profile = observer(() => { ]; const columns = [ { - title: "Markup Price", - dataIndex: "mark_up_price", - key: "mark_up_price", + title: "Price", + dataIndex: "price", + key: "price", width: "20%", render: (text) => new Intl.NumberFormat("id-ID", { @@ -131,9 +131,9 @@ export const Profile = observer(() => { }).format(text), }, { - title: "Name", - dataIndex: "name", - key: "name", + title: "Buyer", + dataIndex: "buyer", + key: "buyer", width: "50%", }, { @@ -141,9 +141,7 @@ export const Profile = observer(() => { dataIndex: "created_at", key: "created_at", render: (text, record) => { - return ( - {format(parseISO(record.created_at), "mm:HH dd-MM-yyyy")} - ); + return {format(parseISO(record.created_at), "dd-MM-yyyy")}; }, }, ]; @@ -208,7 +206,7 @@ export const Profile = observer(() => { - + @@ -226,7 +224,7 @@ export const Profile = observer(() => { <Col></Col> </Row> </Col> - <Col> + <Col span={store.ui.mediaQuery.isMobile ? 8 : 5}> <Row justify={"center"}> <Col lg={12} xs={12}> <Title strong level={3} style={styleSaldoTitle}> @@ -292,17 +290,13 @@ export const Profile = observer(() => { > <Row> <Col span={24}> - <Form - layout="vertical" - name="filter" - form={form} - > + <Form layout="vertical" name="filter" form={form}> <Form.Item name="start_date" label="Dari" rules={[{ required: true, message: "Please input Date!" }]} > - <DatePicker style={{ width: "100%" }}/> + <DatePicker style={{ width: "100%" }} /> </Form.Item> <Form.Item name="end_date" diff --git a/src/store/authentication.js b/src/store/authentication.js index 2d2ee4d..6cde95a 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -2,6 +2,7 @@ import {makeAutoObservable, runInAction} from "mobx"; import {TokenUtil} from "../utils/token"; import {http} from "../utils/http"; + export class Authentication { isLoggedIn = false; isLoginLoading = false; @@ -53,6 +54,7 @@ export class Authentication { async getProfile() { try { const response = await http.get('/auth/profile'); + console.log(response) this.profileData = response.body; } catch (e) { console.error(e); diff --git a/src/store/transaction.js b/src/store/transaction.js index 47cba84..32be61d 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -30,6 +30,7 @@ export class Transaction { pageSizeHistoryTopUp = 10; dataHistoryTopUp = []; total_dataHistoryTopUp = 0; + dataTransaction=[] //filter visibleModalFilterTransaction = false; @@ -52,6 +53,19 @@ export class Transaction { } } + async getDataTransaction() { + try { + const response = await http.get( + `/transaction/total-order` + ); + //console.log(response) + this.dataTransaction = response.body.data ?? []; + this.total_data = response?.body?.count ?? 0; + } catch (e) { + console.error(e); + } + } + async getDataSubCategories() { try { const response = await http.get( From 467d67089f61f69a8054c706b4c18709ff520890 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" <ajat91.sudrajat@gmail.com> Date: Thu, 30 Dec 2021 15:23:20 +0700 Subject: [PATCH 2/9] Tambah Fitur --- src/component/PartnerComponent.js | 6 +- src/pages/Membership/MembershipModal.js | 6 +- src/pages/Profile/Profile.js | 76 +------------------------ 3 files changed, 7 insertions(+), 81 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index 7dd2f90..9f95638 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -418,11 +418,11 @@ export const PartnerComponent = observer((props) => { }, { pattern: /^(?:\d*)$/, - message: "Value should contain just number", + message: "Phone number should contain just number", }, { - pattern: /^[\d]{0,12}$/, - message: "Value should be less than 12 character", + pattern: /^[\d]{2,12}$/, + message: "Phone number should be 12 character", }, ]} > diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index c58d4e8..52fe0d7 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -98,12 +98,12 @@ export const MembershipModal = ({ }, { pattern: /^(?:\d*)$/, - message: "Value should contain just number", + message: "Phone number should contain just number", }, { //pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/, - pattern: /^[\d]{0,12}$/, - message: "Value should be less than 12 character", + pattern: /^[\d]{2,12}$/, + message: "Phone number should be 12 character", }, ]} > diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index f079a0b..42f0f04 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -66,14 +66,6 @@ export const Profile = observer(() => { }; const handleSubmitFilter = async () => { - // store.product.filterSupplier = filterSupplier; - // store.product.filterSubCategory = filterSubCategories; - // modalLoader.setLoading(true); - // await store.product.getData(); - // modalLoader.setLoading(false); - // store.transaction.visibleModalFilterTransaction = false; - - console.log(form.getFieldsValue(), "Tes"); const data = form.getFieldsValue(); store.transaction.filterStart = data.start_date; store.transaction.filterEnd = data.end_date; @@ -83,16 +75,6 @@ export const Profile = observer(() => { store.transaction.visibleModalFilterTransaction = 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 = [ <Button key={"remove"} @@ -303,66 +285,10 @@ export const Profile = observer(() => { label="Sampai" rules={[{ required: true, message: "Please input Date!" }]} > - <DatePicker - style={{ width: "100%" }} - // defaultValue={moment("YYYY-MM-DD")} - /> + <DatePicker style={{ width: "100%" }} /> </Form.Item> </Form> - {/* <Select - mode={"multiple"} - placeholder="Choose Supplier" - onChange={(val) => { - setFilterSupplier(val); - }} - style={{ marginBottom: "20px", width: "100%" }} - value={filterSupplier} - > - {store.supplier.data.map((item) => ( - <Option value={item.id} key={item.id}> - {item.name} - </Option> - ))} - </Select> */} </Col> - {/* <Col span={24}> - <Title level={5} type={"secondary"} strong> - Filter Categories - - - - - - Filter Sub-Categories - - - */} From 07c08472b39b0800206d3a84752615865b3fa677 Mon Sep 17 00:00:00 2001 From: "ajat91.sudrajat" Date: Thu, 30 Dec 2021 17:38:34 +0700 Subject: [PATCH 3/9] Perbaikan Menu Profil --- src/pages/Profile/Profile.js | 69 +++++++++++++++++++++++++----------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 42f0f04..ac999c2 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -105,7 +105,7 @@ export const Profile = observer(() => { title: "Price", dataIndex: "price", key: "price", - width: "20%", + render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", @@ -113,10 +113,34 @@ export const Profile = observer(() => { }).format(text), }, { - title: "Buyer", + title: "Pembeli", dataIndex: "buyer", key: "buyer", - width: "50%", + }, + { + title: "Tujuan", + dataIndex: "tujuan", + key: "tujuan", + }, + { + title: "ID Transaksi", + dataIndex: "id_transaksi", + key: "id_transaksi", + }, + { + title: "Status", + dataIndex: "status", + key: "status", + }, + { + title: "No Seri", + dataIndex: "no_seri", + key: "no_seri", + }, + { + title: "IDTrx Mitra", + dataIndex: "idtrx_mitra", + key: "idtrx_mitra", }, { title: "Transaction Date", @@ -206,30 +230,33 @@ export const Profile = observer(() => { - - - - - Profit - + {store.authentication.userData.role === "Admin" || + (store.authentication.userData.role === "Supervisor" && ( + + + + + Profit + + + + + {new Intl.NumberFormat("id-ID", { + style: "currency", + currency: "IDR", + }).format(store.authentication.profileData?.wallet || 0)} + + + + - - - {new Intl.NumberFormat("id-ID", { - style: "currency", - currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} - - - - - + ))}
- History User Transaction + History Transaction
- - - - - + + + + + + + Produk & Nominal @@ -115,7 +115,7 @@ export const Product = observer(() => { { - setVisibleModalBuy(true) + setVisibleModalBuy(true); }} hoverable style={{ @@ -123,12 +123,12 @@ export const Product = observer(() => { marginLeft: 10, borderColor: "salmon", height: 100, - marginBottom: 10 + marginBottom: 10, }} > - {item.product_name} -
- + {item.product_name} +
+ {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", @@ -137,34 +137,47 @@ export const Product = observer(() => {
{ - form.resetFields(); - handleCancel(); - }} - onOk={() => { - form - .validateFields() - .then((values) => { - console.log(values, "isi form"); - handleBuyProduct(values, item.product_code); - form.resetFields(); - }) - .catch((info) => { - console.error("Validate Failed:", info); - }); - }} + visible={visibleModalBuy} + title={`Are you sure buy ${item.product_name}?`} + okText={"Confirm"} + cancelText="Cancel" + onCancel={() => { + form.resetFields(); + handleCancel(); + }} + onOk={() => { + form + .validateFields() + .then((values) => { + console.log(values, "isi form"); + handleBuyProduct(values, item.product_code); + form.resetFields(); + }) + .catch((info) => { + console.error("Validate Failed:", info); + }); + }} >
- +
From bf332f9494f657aebc38a391fe51fe1c31ab4159 Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 22:21:32 +0700 Subject: [PATCH 5/9] fix: profile --- src/pages/Profile/Profile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index ac999c2..c9c4144 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -224,7 +224,7 @@ export const Profile = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} + }).format(store.authentication.profileData?.profit || 0)} From 0e12a22be38997466ca9cb34da813d69a382525f Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 22:31:34 +0700 Subject: [PATCH 6/9] fix: get product --- src/component/ProductComponent.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/component/ProductComponent.js b/src/component/ProductComponent.js index 0ffcece..a5f6f93 100644 --- a/src/component/ProductComponent.js +++ b/src/component/ProductComponent.js @@ -129,11 +129,11 @@ export const ProductComponent = observer((props) => { }, ]; if (store.authentication.userData.role !== "Admin") columns.pop(); - if (store.authentication.userData.role !== "Admin") delete columns[2]; + if (store.authentication.userData.role === "Admin Partner") delete columns[2]; if (store.authentication.userData.role === "Admin Partner") delete columns[3]; + if (store.authentication.userData.role != "Admin Partner") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[6]; if (store.authentication.userData.role === "Admin Partner") delete columns[7]; - if (store.authentication.userData.role === "Admin") delete columns[4]; if (store.authentication.userData.role !== "Admin") delete columns[8]; if (store.authentication.userData.role === "Admin Partner") delete columns[5]; From a444623d0dfc58e2b82ad0035ad564688db06269 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 00:18:52 +0700 Subject: [PATCH 7/9] fix: membership and config partner --- src/component/PartnerComponent.js | 2 +- src/pages/Membership/Membership.js | 2 +- src/store/membership.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index cfddd6f..29c3a46 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -391,7 +391,7 @@ export const PartnerComponent = observer((props) => { )} {((idData && isChangePassword) || !idData) && ( { value={filterMembership} > {store.membership.data.map((item) => ( - ))} diff --git a/src/store/membership.js b/src/store/membership.js index 197eb89..a9f78cb 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -21,7 +21,7 @@ export class Membership { async getData() { try { - const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superrior=${this.filterMembership}&type=${this.filterPartner}`); + const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}&superior=${this.filterMembership}&type=${this.filterPartner}`); // console.log(this.filterMembership) // console.log(this.filterPartner) // console.log(response) From 71840f249702a2145e5a03eee164fa0c2889ca17 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 00:25:04 +0700 Subject: [PATCH 8/9] add: profit in profile --- src/pages/Profile/Profile.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index c9c4144..d073070 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -224,7 +224,7 @@ export const Profile = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.profit || 0)} + }).format(store.authentication.profileData?.wallet || 0)} @@ -244,7 +244,7 @@ export const Profile = observer(() => { {new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", - }).format(store.authentication.profileData?.wallet || 0)} + }).format(store.authentication.profileData?.profit || 0)} From fb0ccd0509c5f5682ddb246d49279ecc59a4f130 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 01:11:13 +0700 Subject: [PATCH 9/9] fix: profile --- src/pages/Profile/Profile.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index d073070..724c17d 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -119,13 +119,13 @@ export const Profile = observer(() => { }, { title: "Tujuan", - dataIndex: "tujuan", - key: "tujuan", + dataIndex: "transaction_destination", + key: "transaction_destination", }, { - title: "ID Transaksi", - dataIndex: "id_transaksi", - key: "id_transaksi", + title: "Kode Transaksi", + dataIndex: "transaction_code", + key: "transaction_code", }, { title: "Status", @@ -134,13 +134,13 @@ export const Profile = observer(() => { }, { title: "No Seri", - dataIndex: "no_seri", - key: "no_seri", + dataIndex: "seri_number", + key: "seri_number", }, { title: "IDTrx Mitra", - dataIndex: "idtrx_mitra", - key: "idtrx_mitra", + dataIndex: "partner_transaction_code", + key: "partner_transaction_code", }, { title: "Transaction Date",