feat: add buy product

This commit is contained in:
caturbgs 2021-12-17 01:43:42 +07:00
parent 319948376a
commit 29f97f751a
3 changed files with 88 additions and 8 deletions

View File

@ -0,0 +1,66 @@
import React from "react";
import {Form, Input, message, Modal} from "antd";
import {observer} from "mobx-react-lite";
import {useStore} from "../utils/useStore";
export const BuyProductModal = observer(({initialData}) => {
const store = useStore();
const [form] = Form.useForm();
const handleCancelBuyProduct = () => {
form.resetFields();
store.transaction.visibleModalTransaction = false;
};
const handleSubmitBuyProduct = 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");
}
store.transaction.visibleModalTransaction = false;
form.resetFields();
};
return (
<div>
<Modal
visible={store.transaction.visibleModalTransaction}
title={`Buy Product ${initialData?.name}`}
okText="Buy"
cancelText="Cancel"
onCancel={handleCancelBuyProduct}
onOk={() => {
form
.validateFields()
.then((values) => {
handleSubmitBuyProduct(values);
})
.catch((info) => {
console.error("Validate Failed:", info);
});
}}
>
<Form
form={form}
layout="vertical"
initialValues={{supplier: store.supplier.code}}
>
<Form.Item
name="code"
label="Code"
rules={[{required: true, message: "Please input Code!"}]}
>
<Input/>
</Form.Item>
</Form>
</Modal>
</div>
);
});

View File

@ -1,7 +1,8 @@
import React, {useEffect, useState} from "react"; import React, {useEffect, useState} from "react";
import {useStore} from "../../utils/useStore"; import {useStore} from "../../utils/useStore";
import {Button, Card, Col, Input, Modal, Row, Select} from "antd"; import {Button, Card, Col, Input, Row, Select} from "antd";
import {observer} from "mobx-react-lite"; import {observer} from "mobx-react-lite";
import {BuyProductModal} from "../../component/BuyProductModal";
const {Search} = Input; const {Search} = Input;
const {Option} = Select; const {Option} = Select;
@ -11,6 +12,7 @@ export const Product = observer(() => {
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [productData, setProductData] = useState([]); const [productData, setProductData] = useState([]);
const [data, setData] = useState({});
useEffect(() => { useEffect(() => {
const init = async () => { const init = async () => {
@ -45,10 +47,9 @@ export const Product = observer(() => {
await store.transaction.getData(); await store.transaction.getData();
} }
const success = () => { const handleBuyProduct = (data) => {
Modal.success({ setData(data);
content: 'some messages...some messages...', store.transaction.visibleModalTransaction = true;
});
} }
return ( return (
@ -61,10 +62,12 @@ export const Product = observer(() => {
<Row> <Row>
<Col span={24}> <Col span={24}>
<Select <Select
placeholder={"Select sub-Category"} placeholder={"Select Sub Category"}
allowClear={true} allowClear={true}
onChange={(val) => { onChange={(val) => {
handleChangeSubcategory(val); if (val) {
handleChangeSubcategory(val)
}
}} }}
style={{marginBottom: "10px", width: "100%"}}> style={{marginBottom: "10px", width: "100%"}}>
{store.transaction.dataSubCategories.map((item, index) => ( {store.transaction.dataSubCategories.map((item, index) => (
@ -89,7 +92,7 @@ export const Product = observer(() => {
{productData.length != 0 && <Row> {productData.length != 0 && <Row>
{productData.map((item, index) => ( {productData.map((item, index) => (
<Col key={index} xs={24} md={16} lg={8}> <Col key={index} xs={24} md={16} lg={8}>
<Card onClick={success}> <Card onClick={() => handleBuyProduct(item)} style={{cursor: "pointer"}}>
<span style={{color: "black"}}>{item.name}</span> <span style={{color: "black"}}>{item.name}</span>
<br/> <br/>
<span style={{color: "grey", fontSize: 10}}>{item.price}</span> <span style={{color: "grey", fontSize: 10}}>{item.price}</span>
@ -102,6 +105,7 @@ export const Product = observer(() => {
Beli Sekarang Beli Sekarang
</Button> </Button>
</Col>} </Col>}
<BuyProductModal initialData={data}/>
</div> </div>
); );
}); });

View File

@ -8,6 +8,7 @@ export class Transaction {
total_data = 0; total_data = 0;
filterSubCategory = null; filterSubCategory = null;
visibleModalProduct = false; visibleModalProduct = false;
visibleModalTransaction = false;
pageCategories = 0; pageCategories = 0;
pageSizeCategories = 10 pageSizeCategories = 10
@ -85,6 +86,15 @@ export class Transaction {
} }
} }
async buyProduct(data) {
try {
const response = await http.post('/transaction/order').send(data);
return response;
} catch (e) {
console.error(e);
}
}
async update(id, data) { async update(id, data) {
try { try {
const response = await http.put(`/product/${id}`).send(data); const response = await http.put(`/product/${id}`).send(data);