diff --git a/src/component/PartnerComponent.js b/src/component/PartnerComponent.js index d08a8e5..f80a61b 100644 --- a/src/component/PartnerComponent.js +++ b/src/component/PartnerComponent.js @@ -23,6 +23,7 @@ export const PartnerComponent = observer((props) => { const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); + const [isChangePassword, setIsChangePassword] = useState(false); const [confirmLoading, setConfirmLoading] = useState(false); const [isLoading, setIsLoading] = useState(false); @@ -62,6 +63,19 @@ export const PartnerComponent = observer((props) => { npwp: data.npwp, address: data.address, }); + setIsChangePassword(false); + store.partner.visibleModalPartner = true; + setIdData(data.id); + }; + + const changePassword = (data) => { + // form.setFieldsValue({ + // name: data.name, + // npwp: data.npwp, + // address: data.address, + + // }); + setIsChangePassword(true); store.partner.visibleModalPartner = true; setIdData(data.id); }; @@ -89,8 +103,7 @@ export const PartnerComponent = observer((props) => { render: (text, record) => ( changeStatus(record?.id, record?.status)} + style={{ color: "#4F566B", cursor: "pointer" }} > {record?.status === true ? " ACTIVE" : "INACTIVE"} @@ -101,25 +114,19 @@ export const PartnerComponent = observer((props) => { key: "action", render: (text, record) => ( + - + {/* */} + ), }, ]; -// const handleEditStatus = async (id)=>{ -// try { -// console.log(id); -// await store.partner.delete(id); -// message.success("Data Berhasil Dihapus"); -// history.push(LINKS.PARTNER); -// } catch (err) { -// console.log("error", err); -// message.error("Gagal menghapus"); -// } -// } - const deleteData = async (id) => { try { console.log(id); @@ -132,7 +139,6 @@ export const PartnerComponent = observer((props) => { } }; - const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", @@ -160,10 +166,10 @@ export const PartnerComponent = observer((props) => { setConfirmLoading(true); try { await store.partner.update(idData, data); - message.success("Success Update Data Partner"); + message.success(isChangePassword ? "Failed Change Partner Password" : "Success Update Data Partner"); //await store.partner.getData() } catch (e) { - message.error("Failed Update Data Partner"); + message.error(isChangePassword ? "Failed Change Partner Password" : "Failed Update Data Partner"); } setConfirmLoading(false); store.partner.visibleModalPartner = false; @@ -211,7 +217,13 @@ export const PartnerComponent = observer((props) => { { @@ -232,60 +244,65 @@ export const PartnerComponent = observer((props) => { }} >
- - - - - - - - - - - - - - - + : { required: true, message: "Please input password name!" }, + ]} + > + + + )} + {((idData && isChangePassword) || !idData) && ( + + + + )} + + {!isChangePassword && ( + <> + + + + + + + + )}
diff --git a/src/pages/App/DesktopLayout.js b/src/pages/App/DesktopLayout.js index de39103..1b47af9 100644 --- a/src/pages/App/DesktopLayout.js +++ b/src/pages/App/DesktopLayout.js @@ -83,7 +83,7 @@ export const DesktopLayout = observer(() => { color: "#413d3e", }} > - Admin + {store.authentication.userData.role} {}} /> diff --git a/src/pages/App/MenuList.js b/src/pages/App/MenuList.js index bf6c867..afc5508 100644 --- a/src/pages/App/MenuList.js +++ b/src/pages/App/MenuList.js @@ -111,14 +111,6 @@ export const MenuList = observer((props) => { )} - {store.authentication.userData.role !== "Retail" && ( - - - - Product - - - )} diff --git a/src/pages/Config/Partner.js b/src/pages/Config/Partner.js index f6ca7c3..0fb2f57 100644 --- a/src/pages/Config/Partner.js +++ b/src/pages/Config/Partner.js @@ -51,10 +51,10 @@ export const Partner = observer(() => { - + */} { - - - - - - )) - + ); diff --git a/src/pages/Membership/Membership.js b/src/pages/Membership/Membership.js index 817bb05..abd6d91 100644 --- a/src/pages/Membership/Membership.js +++ b/src/pages/Membership/Membership.js @@ -41,8 +41,8 @@ export const Membership = observer(() => { const init = async () => { try { setIsLoading(true); - await store.membership.getData(); - await store.role.getData(); + await getData(); + store.role.getData(); setIsLoading(false); } catch (e) { setIsLoading(false); @@ -52,9 +52,18 @@ export const Membership = observer(() => { init(); }, []); + const getData = () => { + (store.authentication.userData.role === "Admin") + ? store.membership.getData() + : store.membership.getDataBySuperior(); + } + const changeStatus = async (id, isActive) => { const status = isActive ? "inactive" : "active"; const status2 = isActive ? "Inactivating" : "Activating"; + + console.log(status); + try { const response = await store.membership.changeStatus(id, status); @@ -96,17 +105,21 @@ export const Membership = observer(() => { dataIndex: "username", key: "username", }, + { + title: "Role", + dataIndex: "roleName", + key: "role", + }, { title: "Status", dataIndex: "status", key: "status", render: (text, record) => ( changeStatus(record?.id, record?.status)} + color={record?.isActive === true ? "processing" : "#E3E8EE"} + style={{ color: "#4F566B" }} > - {record?.status === true ? " ACTIVE" : "INACTIVE"} + {record?.isActive === true ? " ACTIVE" : "INACTIVE"} ), }, @@ -115,27 +128,45 @@ export const Membership = observer(() => { key: "action", render: (text, record) => ( + + {/* - {/* */} ), @@ -154,16 +185,26 @@ export const Membership = observer(() => { ]; const onSubmit = async (data) => { + data.superior = true; + if (initialData.id) { setInitialData({}); setConfirmLoading(true); try { console.log(data); await store.membership.update(initialData.id, data); - message.success("Success Update Data Member"); - await store.membership.getData(); + message.success( + initialData.isChangePassword + ? "Success Change Member Password" + : "Success Update Data Member" + ); + await getData(); } catch (e) { - message.error("Failed Update Data Member"); + message.error( + initialData.isChangePassword + ? "Failed Update Member Password" + : "Failed Update Data Member" + ); } setConfirmLoading(false); setVisibleModal(false); @@ -173,7 +214,7 @@ export const Membership = observer(() => { try { await store.membership.create(data); message.success("Success Add New Member"); - await store.membership.getData(); + await getData(); } catch (e) { console.log(e, "apa errornya"); message.error("Failed Add Member"); @@ -195,7 +236,7 @@ export const Membership = observer(() => { //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 store.membership.getData(); + await getData(); } catch (e) { message.error("Failed Delete Data"); } @@ -273,7 +314,7 @@ export const Membership = observer(() => { store.membership.pageSize = page.pageSize; store.membership.page = pageNumber - 1; // store.membership.isLoading = true; - await store.membership.getData(); + await getData(); // store.membership.isLoading = false; }} /> @@ -287,7 +328,7 @@ export const Membership = observer(() => { onChange: (page) => { store.membership.pageSize = page.pageSize; store.membership.page = page.current; - store.membership.getData(); + getData(); }, pageSize: store.membership.pageSize, total: store.membership.total_data, diff --git a/src/pages/Membership/MembershipModal.js b/src/pages/Membership/MembershipModal.js index c3c9796..bfc0a59 100644 --- a/src/pages/Membership/MembershipModal.js +++ b/src/pages/Membership/MembershipModal.js @@ -17,7 +17,13 @@ export const MembershipModal = ({ return ( { @@ -28,7 +34,10 @@ export const MembershipModal = ({ form .validateFields() .then((values) => { - onCreate(values); + let input = values; + input.username = initialData.username; + + onCreate(input); form.resetFields(); }) .catch((info) => { @@ -42,58 +51,39 @@ export const MembershipModal = ({ name="form_in_modal" initialValues={initialData} > - - - - - - - - - - - - + + + )} + {((initialData.id && initialData.isChangePassword) || !initialData.id) && ( + + + + )} + {((initialData.id && !initialData.isChangePassword) || !initialData.id) && ( + + + + )} ); diff --git a/src/pages/Product/Product.js b/src/pages/Product/Product.js index 2f5496a..0f80346 100644 --- a/src/pages/Product/Product.js +++ b/src/pages/Product/Product.js @@ -1,5 +1,5 @@ import React, { useEffect, useState } from "react"; -import { Button, Card, Col, Input, Row, Tabs } from "antd"; +import { Button, Card, Col, Input, Row, Select, Tabs } from "antd"; import { FilterOutlined, PlusSquareOutlined } from "@ant-design/icons"; import { BreadcumbComponent } from "../../component/BreadcumbComponent"; import { useStore } from "../../utils/useStore"; @@ -9,6 +9,7 @@ import { LINKS } from "../../routes/app"; const { TabPane } = Tabs; const { Search } = Input; +const { Option } = Select; export const Product = observer(() => { const [isLoading, setIsLoading] = useState(false); @@ -72,14 +73,27 @@ export const Product = observer(() => { - + + + + + + + {/* {store.product.dataCategories.map((item, idx) => ( - - {/* */} - - + */} + {/* */} + + {/* ))} - + */} ); diff --git a/src/pages/Profile/Profile.js b/src/pages/Profile/Profile.js index 25e83d2..f4f366a 100644 --- a/src/pages/Profile/Profile.js +++ b/src/pages/Profile/Profile.js @@ -1,12 +1,14 @@ -import React from "react"; -import {Card, Col, Row, Typography} from "antd"; +import React, {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"; const {Title, Text} = Typography; -export const Profile = () => { +export const Profile = observer(() => { const store = useStore(); const routeData = [ { @@ -19,34 +21,103 @@ export const Profile = () => { }, ]; + useEffect(() => { + (async () => { + await Promise.allSettled([ + store.authentication.getProfile(), + store.transaction.getDataHistoryTransaction(), + ]); + })() + }, []); + + 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', + }, + ] + 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} +
+ +
+
- Profile - - - Name - - - {store.authentication.userData.username} - - - Role - - - {store.authentication.userData.role} - - + History User Transaction + + +
-
) -}; +}); diff --git a/src/store/authentication.js b/src/store/authentication.js index 4b90963..eb541b0 100644 --- a/src/store/authentication.js +++ b/src/store/authentication.js @@ -6,6 +6,7 @@ export class Authentication { isLoggedIn = false; isLoginLoading = false; ctx; + profileData = {}; constructor(ctx) { this.ctx = ctx; @@ -49,6 +50,16 @@ export class Authentication { } } + async getProfile() { + try { + const response = await http.get('/auth/profile'); + this.profileData = response.body; + } catch (e) { + console.error(e); + throw e; + } + } + logout() { TokenUtil.clearAccessToken(); TokenUtil.persistToken(); diff --git a/src/store/commission.js b/src/store/commission.js index e01bc24..1e7abeb 100644 --- a/src/store/commission.js +++ b/src/store/commission.js @@ -26,8 +26,11 @@ export class Commission { async getData() { const response = await http.get(`/config/commission?page=${this.page}&pageSize=${this.pageSize}`); - console.log(response) - this.data = response.body.data ?? [] + this.data = response.body.data.map((item, idx) => { + item.key = idx; + return item + }) ?? [] + this.total_data = response.body.total_data ?? 0 } async create(data) { diff --git a/src/store/membership.js b/src/store/membership.js index fcbea6b..e6398fe 100644 --- a/src/store/membership.js +++ b/src/store/membership.js @@ -14,19 +14,26 @@ export class Membership { async getData() { const response = await http.get(`/users?page=${this.page}&pageSize=${this.pageSize}`); - + this.data = response.body.data.map((item, idx) => { item.key = idx; + item.roleName = item.roles.name; + return item + }) ?? [] + + this.total_data = response.body.total_data ?? 0 + } + + async getDataBySuperior() { + const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); + this.data = response.body.data.map((item, idx) => { + item.key = idx; + item.roleName = item.roles.name; return item }) ?? [] this.total_data = response.body.total_data ?? 0 } - // async getData() { - // const response = await http.get(`/users/find-by-supperior?page=${this.page}&pageSize=${this.pageSize}`); - // this.data = response.body.data ?? [] - // this.total_data = response.body.total_data ?? 0 - // } async create(data) { return await http.post('/users').send(data) @@ -47,6 +54,8 @@ export class Membership { } async changeStatus(id, status) { + console.log(`/users/${id}/${status}`); + const response = await http.get(`/users/${id}/${status}`); await this.getData(); return response; diff --git a/src/store/transaction.js b/src/store/transaction.js index 8150f40..63b8c31 100644 --- a/src/store/transaction.js +++ b/src/store/transaction.js @@ -1,5 +1,5 @@ -import { makeAutoObservable } from "mobx"; -import { http } from "../utils/http"; +import {makeAutoObservable} from "mobx"; +import {http} from "../utils/http"; export class Transaction { page = 0; @@ -19,6 +19,11 @@ export class Transaction { dataSubCategories = []; total_dataSubCategories = 0; + pageHistoryTransaction = 0; + // pageSizeHistoryTransaction = 10 + dataHistoryTransaction = []; + total_dataHistoryTransaction = 0; + constructor(ctx) { this.ctx = ctx; makeAutoObservable(this); @@ -47,6 +52,13 @@ export class Transaction { } } + async getDataHistoryTransaction() { + const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); + + this.dataHistoryTransaction = response.body.data ?? [] + this.total_dataHistoryTransaction = response.body.total_data ?? 0 + } + async create(data) { const response = await http.post('/product').send(data); await this.getData(); diff --git a/src/store/user.js b/src/store/user.js index 741da5b..9e08229 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -1,9 +1,14 @@ -import {action, observable} from "mobx"; +import {action, makeAutoObservable, observable} from "mobx"; import {http} from "../utils/http"; export class User { @observable data = []; + constructor(ctx) { + this.ctx = ctx; + makeAutoObservable(this); + } + @action async getData() { this.data = (await http.get('/user')).body.data;