Merge branch 'develop' into 'devops-staging'

Develop

See merge request empatnusabangsa/ppob/ppob-frontend!8
This commit is contained in:
ilham dwi pratama 2021-12-22 16:00:12 +00:00
commit eba489971c
14 changed files with 287 additions and 264 deletions

View File

@ -1,23 +1,11 @@
import React, { useContext, useEffect, useState } from "react"; import React, {useContext, useState} from "react";
import { import {Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag,} from "antd";
Button, import {observer} from "mobx-react-lite";
Form, import {ExclamationCircleOutlined} from "@ant-design/icons";
Input, import {useHistory} from "react-router-dom";
message, import {useStore} from "../utils/useStore";
Modal, import {LINKS} from "../routes/app";
Select, import {ModalLoaderContext} from "../utils/modal";
Space,
Table,
Tag,
List,
Divider,
} from "antd";
import { observer } from "mobx-react-lite";
import { ExclamationCircleOutlined } from "@ant-design/icons";
import { useHistory } from "react-router-dom";
import { useStore } from "../utils/useStore";
import { LINKS } from "../routes/app";
import { ModalLoaderContext } from "../utils/modal";
export const PartnerComponent = observer((props) => { export const PartnerComponent = observer((props) => {
const store = useStore(); const store = useStore();
@ -223,15 +211,15 @@ export const PartnerComponent = observer((props) => {
pagination={{ pagination={{
onChange: async (page) => { onChange: async (page) => {
store.partner.pageSize = page.pageSize; store.partner.pageSize = page.pageSize;
store.partner.page = page.current; store.partner.page = page.current - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
await store.partner.getData(); await store.partner.getData();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}, },
pageSize: store.partner.pageSize, pageSize: store.partner.pageSize,
total: store.partner.total_data, total: store.partner.total_data,
current: store.partner.page, current: store.partner.page + 1,
style: { marginBottom: "1rem", marginRight: "1rem" }, style: {marginBottom: "1rem", marginRight: "1rem"},
}} }}
dataSource={store.partner.data} dataSource={store.partner.data}
style={{ padding: 0 }} style={{ padding: 0 }}

View File

@ -281,15 +281,15 @@ export const ProductComponent = observer((props) => {
pagination={{ pagination={{
onChange: async (page) => { onChange: async (page) => {
store.product.pageSize = page.pageSize; store.product.pageSize = page.pageSize;
store.product.page = page.current; store.product.page = page.current - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
await store.product.getData(); await store.product.getData();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}, },
pageSize: store.product.pageSize, pageSize: store.product.pageSize,
total: store.product.total_data, total: store.product.total_data,
current: store.product.page, current: store.product.page + 1,
style: { marginBottom: "1rem", marginRight: "1rem" }, style: {marginBottom: "1rem", marginRight: "1rem"},
}} }}
dataSource={store.product.data} dataSource={store.product.data}
style={{ padding: 0 }} style={{ padding: 0 }}

View File

@ -125,15 +125,15 @@ export const SubcategoryComponent = observer((props) => {
pagination={{ pagination={{
onChange: async (page) => { onChange: async (page) => {
store.subcategory.pageSize = page.pageSize; store.subcategory.pageSize = page.pageSize;
store.subcategory.page = page.current; store.subcategory.page = page.current - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
await store.subcategory.getData(); await store.subcategory.getData();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}, },
pageSize: store.subcategory.pageSize, pageSize: store.subcategory.pageSize,
total: store.subcategory.total_data, total: store.subcategory.total_data,
current: store.subcategory.page, current: store.subcategory.page + 1,
style: { marginBottom: "1rem", marginRight: "1rem" }, style: {marginBottom: "1rem", marginRight: "1rem"},
}} }}
dataSource={store.subcategory.data} dataSource={store.subcategory.data}
style={{ padding: 0 }} style={{ padding: 0 }}

View File

@ -1,23 +1,12 @@
import React, { useContext, useState } from "react"; import React, {useContext, useState} from "react";
import { import {Button, Divider, Form, Input, List, message, Modal, Space, Table, Tag,} from "antd";
Button, import {observer} from "mobx-react-lite";
Form, import {ExclamationCircleOutlined} from "@ant-design/icons";
Input, import {useHistory} from "react-router-dom";
message, import {useStore} from "../utils/useStore";
Modal, import {LINKS} from "../routes/app";
Space, import {TopupsaldoModal} from "./TopupsaldoModal";
Table, import {ModalLoaderContext} from "../utils/modal";
Tag,
List,
Divider,
} from "antd";
import { observer } from "mobx-react-lite";
import { ExclamationCircleOutlined } from "@ant-design/icons";
import { useHistory } from "react-router-dom";
import { useStore } from "../utils/useStore";
import { LINKS } from "../routes/app";
import { TopupsaldoModal } from "./TopupsaldoModal";
import { ModalLoaderContext } from "../utils/modal";
export const SupplierComponent = observer((props) => { export const SupplierComponent = observer((props) => {
const store = useStore(); const store = useStore();
@ -231,15 +220,15 @@ export const SupplierComponent = observer((props) => {
pagination={{ pagination={{
onChange: async (page) => { onChange: async (page) => {
store.supplier.pageSize = page.pageSize; store.supplier.pageSize = page.pageSize;
store.supplier.page = page.current; store.supplier.page = page.current - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
await store.supplier.getData(); await store.supplier.getData();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}, },
pageSize: store.supplier.pageSize, pageSize: store.supplier.pageSize,
total: store.supplier.total_data, total: store.supplier.total_data,
current: store.supplier.page, current: store.supplier.page + 1,
style: { marginBottom: "1rem", marginRight: "1rem" }, style: {marginBottom: "1rem", marginRight: "1rem"},
}} }}
dataSource={store.supplier.data} dataSource={store.supplier.data}
style={{ padding: 0 }} style={{ padding: 0 }}

View File

@ -206,24 +206,24 @@ export const DesktopLayout = observer(() => {
</Menu.Item> </Menu.Item>
)} )}
<SubMenu <SubMenu
key="payback-main" key="payback-main"
icon={<ProfileOutlined />} icon={<ProfileOutlined/>}
title="Payback" title="Created"
> >
{store.authentication.userData.role !== "Retail" && ( {store.authentication.userData.role !== "Retail" && (
<Menu.Item key="payback-to-user"> <Menu.Item key="payback-to-user">
<Link to={LINKS.PAYBACK}> <Link to={LINKS.PAYBACK}>
<PayCircleOutlined /> <PayCircleOutlined/>
<span>Payback To</span> <span>Confirmation</span>
</Link> </Link>
</Menu.Item> </Menu.Item>
)} )}
{store.authentication.userData.role !== "Admin" && ( {store.authentication.userData.role !== "Admin" && (
<Menu.Item key="payback-from-user"> <Menu.Item key="payback-from-user">
<Link to={LINKS.PAYBACK_FROM_USER}> <Link to={LINKS.PAYBACK_CREATED}>
<AlipayOutlined/> <AlipayOutlined/>
<span>Payback</span> <span>Created</span>
</Link> </Link>
</Menu.Item> </Menu.Item>
)} )}
</SubMenu> </SubMenu>

View File

@ -131,16 +131,16 @@ export const MenuList = observer((props) => {
{store.authentication.userData.role !== "Retail" && ( {store.authentication.userData.role !== "Retail" && (
<Menu.Item key="payback-to-user"> <Menu.Item key="payback-to-user">
<Link to={LINKS.PAYBACK}> <Link to={LINKS.PAYBACK}>
<PayCircleOutlined /> <PayCircleOutlined/>
<span>Payback To</span> <span>Confirmation</span>
</Link> </Link>
</Menu.Item> </Menu.Item>
)} )}
{store.authentication.userData.role !== "Admin" && ( {store.authentication.userData.role !== "Admin" && (
<Menu.Item key="payback-from-user"> <Menu.Item key="payback-from-user">
<Link to={LINKS.PAYBACK_FROM_USER}> <Link to={LINKS.PAYBACK_CREATED}>
<AlipayOutlined/> <AlipayOutlined/>
<span>Payback</span> <span>Created</span>
</Link> </Link>
</Menu.Item> </Menu.Item>
)} )}

View File

@ -338,17 +338,17 @@ export const Membership = observer(() => {
itemLayout="horizontal" itemLayout="horizontal"
position={"top"} position={"top"}
pagination={{ pagination={{
onChange: async (page) => { onChange: async (page) => {
store.membership.pageSize = page.pageSize; store.membership.pageSize = page.pageSize;
store.membership.page = page.current; store.membership.page = page.current - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
await getData(); await getData();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}, },
pageSize: store.membership.pageSize, pageSize: store.membership.pageSize,
total: store.membership.total_data, total: store.membership.total_data,
current: store.membership.page, current: store.membership.page + 1,
style: { marginBottom: "1rem", marginRight: "1rem" }, style: {marginBottom: "1rem", marginRight: "1rem"},
}} }}
dataSource={store.membership.data} dataSource={store.membership.data}
style={{ padding: 0 }} style={{ padding: 0 }}

View File

@ -1,45 +1,45 @@
import React, {useContext, useEffect} from "react"; import React, {useContext, useEffect} from "react";
import {Button, Card, Col, Divider, Image, Input, List, message, Row, Space, Table,} from "antd"; import {Button, Card, Col, Divider, Image, Input, List, message, Modal, Row, Space, Table,} from "antd";
import {useStore} from "../../utils/useStore"; import {useStore} from "../../utils/useStore";
import {observer} from "mobx-react-lite"; import {observer} from "mobx-react-lite";
import {CheckCircleOutlined, CloseOutlined, FilterOutlined,} from "@ant-design/icons"; import {CheckCircleOutlined, CheckOutlined, CloseOutlined, FilterOutlined, StopOutlined,} from "@ant-design/icons";
import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {LINKS} from "../../routes/app"; import {LINKS} from "../../routes/app";
import {ModalLoaderContext} from "../../utils/modal"; import {ModalLoaderContext} from "../../utils/modal";
import {appConfig} from "../../config/app"; import {appConfig} from "../../config/app";
import {capitalize} from "lodash";
const {Search} = Input; const {Search} = Input;
export const Payback = observer(() => { export const Payback = observer(() => {
const store = useStore(); const store = useStore();
const modalLoader = useContext(ModalLoaderContext); const modalLoader = useContext(ModalLoaderContext);
useEffect(() => { useEffect(() => {
const init = async () => { const init = async () => {
try { try {
modalLoader.setLoading(true); modalLoader.setLoading(true);
await store.payback.getData(); await store.payback.getDataConfirmation();
modalLoader.setLoading(false); modalLoader.setLoading(false);
} catch (e) { } catch (e) {
modalLoader.setLoading(false); modalLoader.setLoading(false);
if (e.response?.body?.message) { if (e.response?.body?.message) {
message.error(e.response.body.message); message.error(e.response.body.message);
return; return;
} }
message.error(e.message); message.error(e.message);
} }
}; };
init(); init();
}, []); }, []);
const columns = [
const columns = [ {
{ title: "Picture",
title: "Picture", dataIndex: "image_prove",
dataIndex: "image_prove", key: "image_prove",
key: "image_prove", render: (text, record) => (
render: (text, record) => (
<Image <Image
src={`${appConfig.apiUrl}/config/image/${text}`} src={`${appConfig.apiUrl}/config/image/${text}`}
style={{width: '5vw'}} style={{width: '5vw'}}
@ -67,7 +67,19 @@ export const Payback = observer(() => {
<Space size="middle"> <Space size="middle">
<Button <Button
onClick={async () => { onClick={async () => {
await handleAction(record, "accept"); Modal.confirm({
title: `Are you sure Accept this submission?`,
icon: <CheckOutlined/>,
okText: "Accept",
cancelText: "Cancel",
okType: "primary",
onOk() {
handleAction(record.id, "accept");
},
onCancel() {
console.log("Cancel");
},
})
}} }}
icon={<CheckCircleOutlined/>} icon={<CheckCircleOutlined/>}
style={{ style={{
@ -80,82 +92,84 @@ export const Payback = observer(() => {
</Button> </Button>
<Button <Button
onClick={async () => { onClick={async () => {
await handleAction(record, "reject"); Modal.confirm({
title: `Are you sure Reject this submission?`,
icon: <StopOutlined/>,
okText: "Reject",
cancelText: "Cancel",
okType: "primary",
onOk() {
handleAction(record.id, "reject");
},
onCancel() {
console.log("Cancel");
},
})
}} }}
icon={<CloseOutlined/>} icon={<CloseOutlined/>}
style={{ style={{
backgroundColor: "#ff1c1c", backgroundColor: "#ff1c1c",
color: "#fff", color: "#fff",
borderColor: "#ff1c1c", borderColor: "#ff1c1c",
}} }}
> >
Reject Reject
</Button> </Button>
</Space> </Space>
), ),
}, },
]; ];
if (store.authentication.userData.role === "Retail") columns.pop(); if (store.authentication.userData.role === "Retail") columns.pop();
const routeData = [ const routeData = [
{ {
route: LINKS.HOME, route: LINKS.HOME,
name: "Home", name: "Home",
}, },
{ {
route: LINKS.PAYBACK, route: LINKS.PAYBACK,
name: <span style={{fontWeight: "bold"}}>Payback</span>, name: <span style={{fontWeight: "bold"}}>Payback Confirmation</span>,
}, },
]; ];
const onSubmit = async (data) => { const handleAction = async (id, type) => {
modalLoader.setLoading(true); modalLoader.setLoading(true);
try { try {
// await store.payback.create(data); const response = await store.payback.confirmPayback(id, {status: capitalize(type)});
// message.success("Success Add New Member"); if (response.body.status !== 201) {
// await store.payback.getData(); message.error(`Failed ${capitalize(type)} Payback`);
} catch (e) { }
console.error(e, "apa errornya"); message.success(`Success ${capitalize(type)} Payback`);
message.error("Failed Add Member"); } catch (e) {
} console.error(e, "apa errornya");
modalLoader.setLoading(false); message.error("Failed Handler Action Payback");
}; }
modalLoader.setLoading(false);
};
const handleAction = async (record, type) => { return (
}; <div className={["ppob-container"].join(" ")}>
<BreadcumbComponent data={routeData}/>
return ( <Card>
<div className={["ppob-container"].join(" ")}> <div>
<BreadcumbComponent data={routeData}/> <Row style={{marginBottom: 20}}>
<Card> <Col span={12}>
<div> <Button>
<Row style={{marginBottom: 20}}> <FilterOutlined/>
<Col span={12}> Filter
<Button> </Button>
<FilterOutlined/> </Col>
Filter <Col span={12} style={{textAlign: "right"}}>
</Button> <Search
</Col> placeholder="input search text"
<Col span={12} style={{textAlign: "right"}}> style={{
<Search width: store.ui.mediaQuery.isMobile ? 160 : 200,
placeholder="input search text" marginRight: store.ui.mediaQuery.isMobile ? 0 : 10,
style={{
width: store.ui.mediaQuery.isMobile ? 160 : 200,
marginRight: store.ui.mediaQuery.isMobile ? 0 : 10,
marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0, marginBottom: store.ui.mediaQuery.isMobile ? 10 : 0,
}} }}
/> />
{/* {store.authentication.userData.role !== "Admin" && (
<Button
onClick={() => {
setInitialData({});
setVisibleModal(true);
}}
>
<PlusSquareOutlined /> New
</Button>
)} */}
</Col> </Col>
</Row> </Row>
{store.ui.mediaQuery.isDesktop && ( {store.ui.mediaQuery.isDesktop && (
@ -163,23 +177,23 @@ export const Payback = observer(() => {
key="1" key="1"
hasEmpty hasEmpty
columns={columns} columns={columns}
dataSource={store.payback.data} dataSource={store.payback.dataConfirmation}
bordered bordered
// pagination={{ pagination={{
// pageSize: store.payback.page, pageSize: store.payback.pageSizeConfirmation,
// total: store.payback.total_data, total: store.payback.totalDataConfirmation,
// current: store.payback.pageSize + 1, current: store.payback.pageSizeConfirmation + 1,
// showSizeChanger: true, showSizeChanger: true,
// simple: false simple: false
// }} }}
// onChange={async (page) => { onChange={async (page) => {
// let pageNumber = page.current; let pageNumber = page.current;
// store.payback.pageSize = page.pageSize; store.payback.pageSizeConfirmation = page.pageSize;
// store.payback.page = pageNumber - 1; store.payback.pageConfirmation = pageNumber - 1;
// modalLoader.setLoading(true); modalLoader.setLoading(true);
// await store.payback.getData(); await store.payback.getDataConfirmation();
// modalLoader.setLoading(false); modalLoader.setLoading(false);
// }} }}
/> />
)} )}
@ -187,30 +201,30 @@ export const Payback = observer(() => {
<List <List
itemLayout="horizontal" itemLayout="horizontal"
position={"top"} position={"top"}
// pagination={{ pagination={{
// onChange: async (page) => { onChange: async (page) => {
// store.payback.pageSize = page.pageSize; store.payback.pageSizeConfirmation = page.pageSize;
// store.payback.page = page.current; store.payback.pageConfirmation = page.current - 1;
// modalLoader.setLoading(true); modalLoader.setLoading(true);
// await store.payback.getData(); await store.payback.getDataConfirmation();
// modalLoader.setLoading(false); modalLoader.setLoading(false);
// }, },
// pageSize: store.payback.pageSize, pageSize: store.payback.pageSizeConfirmation,
// total: store.payback.total_data, total: store.payback.totalDataConfirmation,
// current: store.payback.page, current: store.payback.pageConfirmation + 1,
// style: {marginBottom: "1rem", marginRight: "1rem"}, style: {marginBottom: "1rem", marginRight: "1rem"},
// }} }}
dataSource={store.payback.data} dataSource={store.payback.dataConfirmation}
style={{padding: 0}} style={{padding: 0}}
renderItem={(item) => { renderItem={(item) => {
return ( return (
<div> <div>
<List.Item <List.Item
key={item.id} key={item.id}
style={{ style={{
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
paddingTop: 0, paddingTop: 0,
paddingBottom: 0, paddingBottom: 0,
display: "flex", display: "flex",
flexDirection: "row", flexDirection: "row",
alignItems: "center", alignItems: "center",

View File

@ -7,10 +7,11 @@ import {PaybackModal} from "./PaybackModal";
import {BreadcumbComponent} from "../../component/BreadcumbComponent"; import {BreadcumbComponent} from "../../component/BreadcumbComponent";
import {LINKS} from "../../routes/app"; import {LINKS} from "../../routes/app";
import {ModalLoaderContext} from "../../utils/modal"; import {ModalLoaderContext} from "../../utils/modal";
import {appConfig} from "../../config/app";
const {Search} = Input; const {Search} = Input;
export const PaybackFromUser = observer(() => { export const PaybackCreated = observer(() => {
const store = useStore(); const store = useStore();
const [initialData, setInitialData] = useState({}); const [initialData, setInitialData] = useState({});
const modalLoader = useContext(ModalLoaderContext); const modalLoader = useContext(ModalLoaderContext);
@ -20,8 +21,8 @@ export const PaybackFromUser = observer(() => {
try { try {
modalLoader.setLoading(true); modalLoader.setLoading(true);
await Promise.allSettled([ await Promise.allSettled([
store.payback.getDataUser(), store.payback.getDataCreated(),
store.authentication.getProfile() store.authentication.getProfile(),
]); ]);
modalLoader.setLoading(false); modalLoader.setLoading(false);
} catch (e) { } catch (e) {
@ -37,19 +38,17 @@ export const PaybackFromUser = observer(() => {
init(); init();
}, []); }, []);
const columns = [ const columns = [
{ {
title: "Picture", title: "Picture",
dataIndex: "image_prove", dataIndex: "image_prove",
key: "image_prove", key: "image_prove",
render: (text, record) => ( render: (text, record) => (
<Image <Image
src={record.image_prove} src={`${appConfig.apiUrl}/config/image/${text}`}
style={{width: 50, height: 50}} style={{width: '5vw'}}
shape="circle" alt={record.id}
alt="avatar" />
/>
), ),
}, },
{ {
@ -70,8 +69,8 @@ export const PaybackFromUser = observer(() => {
name: "Home", name: "Home",
}, },
{ {
route: LINKS.PAYBACK_FROM_USER, route: LINKS.PAYBACK_CREATED,
name: <span style={{fontWeight: "bold"}}>Payback User</span>, name: <span style={{fontWeight: "bold"}}>Payback Created</span>,
}, },
]; ];
@ -113,21 +112,21 @@ export const PaybackFromUser = observer(() => {
key="1" key="1"
hasEmpty hasEmpty
columns={columns} columns={columns}
dataSource={store.payback.dataPaybackUser} dataSource={store.payback.dataCreated}
bordered bordered
pagination={{ pagination={{
pageSize: store.payback.pageSizePaybackUser, pageSize: store.payback.pageSizeCreated,
total: store.payback.total_dataPaybackUser, total: store.payback.totalDataCreated,
current: store.payback.pageSizePaybackUser + 1, current: store.payback.pageCreated + 1,
showSizeChanger: true, showSizeChanger: true,
simple: false simple: false
}} }}
onChange={async (page) => { onChange={async (page) => {
let pageNumber = page.current; let pageNumber = page.current;
store.payback.pageSizePaybackUser = page.pageSize; store.payback.pageSizeCreated = page.pageSize;
store.payback.pageSizePaybackUser = pageNumber - 1; store.payback.pageCreated = pageNumber - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
//await store.payback.getDataUser(); await store.payback.getDataCreated();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}} }}
/> />
@ -139,18 +138,18 @@ export const PaybackFromUser = observer(() => {
position={"top"} position={"top"}
pagination={{ pagination={{
onChange: async (page) => { onChange: async (page) => {
store.payback.pageSizePaybackUser = page.pageSize; store.payback.pageSizeCreated = page.pageSize;
store.payback.pageSizePaybackUser = page.current; store.payback.pageCreated = page.current - 1;
modalLoader.setLoading(true); modalLoader.setLoading(true);
await store.payback.getDataUser(); await store.payback.getDataCreated();
modalLoader.setLoading(false); modalLoader.setLoading(false);
}, },
pageSize: store.payback.pageSizePaybackUser, pageSize: store.payback.pageSizeCreated,
total: store.payback.total_dataPaybackUser, total: store.payback.totalDataCreated,
current: store.payback.pageSizePaybackUser, current: store.payback.pageCreated + 1,
style: {marginBottom: "1rem", marginRight: "1rem"}, style: {marginBottom: "1rem", marginRight: "1rem"},
}} }}
dataSource={store.payback.dataPaybackUser} dataSource={store.payback.dataCreated}
style={{padding: 0}} style={{padding: 0}}
renderItem={(item) => { renderItem={(item) => {
return ( return (

View File

@ -45,7 +45,6 @@ export const PaybackModal = ({initialData}) => {
}; };
const handleChange = (info) => { const handleChange = (info) => {
console.log(info, "apa isi onchange")
if (info.file.status === 'uploading') { if (info.file.status === 'uploading') {
setLoading(true); setLoading(true);
} else { } else {
@ -69,7 +68,7 @@ export const PaybackModal = ({initialData}) => {
image_prove: responseFilename image_prove: responseFilename
} }
await store.payback.create(request); await store.payback.create(request);
message.success("Success Add Payback"); message.success("Success Add Created");
} catch (e) { } catch (e) {
if (e.response?.body?.message) { if (e.response?.body?.message) {
message.error(e.response.body.message); message.error(e.response.body.message);
@ -98,7 +97,7 @@ export const PaybackModal = ({initialData}) => {
return ( return (
<Modal <Modal
visible={store.payback.visibleModalPayback} visible={store.payback.visibleModalPayback}
title={"Create a new Payback"} title={"Create a new Created"}
okText={"Create"} okText={"Create"}
cancelText="Cancel" cancelText="Cancel"
onCancel={handleCancel} onCancel={handleCancel}

View File

@ -122,7 +122,13 @@ export const Profile = observer(() => {
<Title strong level={3} style={styleSaldoTitle}>Saldo</Title> <Title strong level={3} style={styleSaldoTitle}>Saldo</Title>
</Col> </Col>
<Col lg={24} xs={12}> <Col lg={24} xs={12}>
<Text style={styleSaldoContent}>{store.authentication.profileData?.wallet}</Text> <Text style={styleSaldoContent}>{
new Intl.NumberFormat("id-ID", {
style: "currency",
currency: "IDR"
})
.format(store.authentication.profileData?.wallet || 0)}
</Text>
</Col> </Col>
</Row> </Row>
</Col> </Col>
@ -139,9 +145,24 @@ export const Profile = observer(() => {
Filter Filter
</Button> </Button>
<Table <Table
columns={columns} columns={columns}
dataSource={store.transaction.dataHistoryTransaction} bordered
bordered dataSource={store.transaction.dataHistoryTransaction}
pagination={{
pageSize: store.transaction.pageSizeHistoryTransaction,
total: store.transaction.total_dataHistoryTransaction,
current: store.transaction.pageHistoryTransaction + 1,
showSizeChanger: true,
simple: false,
}}
onChange={async (page) => {
let pageNumber = page.current;
store.transaction.pageSizeHistoryTransaction = page.pageSize;
store.transaction.pageHistoryTransaction = pageNumber - 1;
modalLoader.setLoading(true);
await store.transaction.getDataHistoryTransaction();
modalLoader.setLoading(false);
}}
/> />
</div> </div>
</Col> </Col>

View File

@ -12,7 +12,7 @@ import {Partner} from "../pages/Config/Partner";
import {Supplier} from "../pages/Config/Supplier"; import {Supplier} from "../pages/Config/Supplier";
import {Category} from "../pages/Product/Category"; import {Category} from "../pages/Product/Category";
import {Payback} from "../pages/Payback/Payback"; import {Payback} from "../pages/Payback/Payback";
import {PaybackFromUser} from "../pages/Payback/PaybackFromUser"; import {PaybackCreated} from "../pages/Payback/PaybackCreated";
import {Subcategory} from "../pages/Product/Subcategory"; import {Subcategory} from "../pages/Product/Subcategory";
export const LINKS = { export const LINKS = {
@ -27,7 +27,7 @@ export const LINKS = {
SUPPLIER: "/app/supplier", SUPPLIER: "/app/supplier",
CATEGORY: "/app/category", CATEGORY: "/app/category",
PAYBACK: "/app/payback", PAYBACK: "/app/payback",
PAYBACK_FROM_USER: "/app/payback-from-user", PAYBACK_CREATED: "/app/payback-created",
SUBCATEGORY: "/app/subcategory", SUBCATEGORY: "/app/subcategory",
USER_DETAIL: "/app/user-detail", USER_DETAIL: "/app/user-detail",
PRODUCT_DETAIL: "/app/product-detail", PRODUCT_DETAIL: "/app/product-detail",
@ -47,8 +47,8 @@ export const AppRoute = () => {
<Route path={LINKS.COMMISSION}> <Route path={LINKS.COMMISSION}>
<Commission/> <Commission/>
</Route> </Route>
<Route path={LINKS.PAYBACK_FROM_USER}> <Route path={LINKS.PAYBACK_CREATED}>
<PaybackFromUser/> <PaybackCreated/>
</Route> </Route>
<Route path={LINKS.CATEGORY}> <Route path={LINKS.CATEGORY}>
<Category/> <Category/>

View File

@ -2,50 +2,50 @@ import {makeAutoObservable} from "mobx";
import {http} from "../utils/http"; import {http} from "../utils/http";
export class Payback { export class Payback {
page = 0; pageCreated = 0;
pageSize = 10; pageSizeCreated = 10;
data = []; dataCreated = [];
total_data = 0; totalDataCreated = 0;
filterCategory = null; filterCategory = null;
visibleModalPayback = false; visibleModalPayback = false;
pagePaybackUser = 0; pageConfirmation = 0;
pageSizePaybackUser = 10; pageSizeConfirmation = 10;
dataPaybackUser = []; dataConfirmation = [];
total_dataPaybackUser = 0; totalDataConfirmation = 0;
constructor(ctx) { constructor(ctx) {
this.ctx = ctx; this.ctx = ctx;
makeAutoObservable(this); makeAutoObservable(this);
} }
async getData() { async getDataCreated() {
try { try {
const response = await http.get( const response = await http.get(
`/transaction/deposit-return?page=${this.page}&pageSize=${this.pageSize}` `/transaction/deposit-return?page=${this.pageCreated}&pageSize=${this.pageSizeCreated}`
); );
this.data = response.body.data.map((item, idx) => { this.dataCreated = response.body.data.map((item, idx) => {
item.key = idx; item.key = idx;
return item; return item;
}) ?? []; }) ?? [];
this.total_data = response.body.count ?? 0; this.totalDataCreated = response.body.count ?? 0;
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
} }
async getDataUser() { async getDataConfirmation() {
try { try {
const response = await http.get( const response = await http.get(
`/transaction/deposit-return/confirmation?page=${this.pagePaybackUser}&pageSize=${this.pageSizePaybackUser}` `/transaction/deposit-return/confirmation?page=${this.pageConfirmation}&pageSize=${this.pageSizeConfirmation}`
); );
this.dataPaybackUser = response.body.data.map((item, idx) => { this.dataConfirmation = response.body.data.map((item, idx) => {
item.key = idx; item.key = idx;
return item; return item;
}) ?? []; }) ?? [];
this.total_dataPaybackUser = response.body.count ?? 0; this.totalDataConfirmation = response.body.count ?? 0;
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
@ -54,7 +54,7 @@ export class Payback {
async update(id, data) { async update(id, data) {
try { try {
const response = await http.put(`/config/commission/${id}`).send(data); const response = await http.put(`/config/commission/${id}`).send(data);
await this.getData(); await this.getDataCreated();
return response; return response;
} catch (e) { } catch (e) {
console.error(e); console.error(e);
@ -64,7 +64,7 @@ export class Payback {
async delete(id) { async delete(id) {
try { try {
const response = await http.del(`/product/${id}`); const response = await http.del(`/product/${id}`);
await this.getData(); await this.getDataCreated();
return response; return response;
} catch (e) { } catch (e) {
console.error(e); console.error(e);
@ -74,7 +74,20 @@ export class Payback {
async create(data) { async create(data) {
try { try {
const response = await http.post("/transaction/deposit-return").send(data); const response = await http.post("/transaction/deposit-return").send(data);
await this.getData(); await this.getDataCreated();
return response;
} catch (e) {
console.error(e);
}
}
async confirmPayback(id, data) {
try {
const response = await http.put(`/transaction/deposit-return/confirmation/${id}`).send(data);
await Promise.all([
this.getDataConfirmation(),
this.getDataCreated()
])
return response; return response;
} catch (e) { } catch (e) {
console.error(e); console.error(e);

View File

@ -23,7 +23,7 @@ export class Transaction {
pageHistoryTransaction = 0; pageHistoryTransaction = 0;
pageHistoryTopUp = 0; pageHistoryTopUp = 0;
// pageSizeHistoryTransaction = 10 pageSizeHistoryTransaction = 10
dataHistoryTransaction = []; dataHistoryTransaction = [];
total_dataHistoryTransaction = 0; total_dataHistoryTransaction = 0;
@ -71,7 +71,7 @@ export class Transaction {
async getDataHistoryTransaction() { async getDataHistoryTransaction() {
try { try {
const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}`); const response = await http.get(`/transaction/history?page=${this.pageHistoryTransaction}&pageSize=${this.pageSizeHistoryTransaction}`);
this.dataHistoryTransaction = response.body.data ?? [] this.dataHistoryTransaction = response.body.data ?? []
this.total_dataHistoryTransaction = response?.body?.count ?? 0 this.total_dataHistoryTransaction = response?.body?.count ?? 0