import React, { useContext, useState } from "react"; import { Button, Col, Divider, Form, Input, InputNumber, List, message, Modal, Row, Select, Table, Tag, Typography, } 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"; const { Title, Text } = Typography; export const ProductComponent = observer((props) => { const store = useStore(); const [form] = Form.useForm(); const { Option } = Select; const history = useHistory(); const [idData, setIdData] = useState(""); const [filterSupplier, setFilterSupplier] = useState([]); const [filterSubCategories, setFilterSubCategories] = useState([]); const modalLoader = useContext(ModalLoaderContext); const handleEditButton = (data) => { console.log(data, "isi data"); form.setFieldsValue({ name: data.name, price: data.price, markUpPrice: data.basePrice, code: data.code, status: data.status, subCategoriesId: data.sub_categories.id, }); store.product.visibleModalProduct = true; setIdData(data.id); }; const columns = [ { title: "Kode", dataIndex: "product_code", key: "product_code", }, { title: "Produk", dataIndex: "product_name", key: "product_name", }, { title: "Harga Beli", dataIndex: "current_price_price", key: "current_price_price", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Harga Jual", dataIndex: "mark_up_price", key: "mark_up_price", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Harga", dataIndex: "price", key: "price", render: (text) => new Intl.NumberFormat("id-ID", { style: "currency", currency: "IDR", }).format(text), }, { title: "Supplier", dataIndex: "supplier_name", key: "supplier_name", }, { title: "Sub Kategori", dataIndex: "sub_categories_name", key: "sub_categories_name", }, { title: "Tersedia", dataIndex: "tersedia", key: "tersedia", render: (text, record) => ( {record?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"} ), }, { title: "Tindakan", key: "action", render: (text, record) => ( ), }, ]; //if (store.authentication.userData.role !== "Admin") columns.pop(); //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[8]; if (store.authentication.userData.role !== "Admin") delete columns[6]; if (store.authentication.userData.role !== "Admin") delete columns[2]; if (store.authentication.userData.role !== "Admin") delete columns[5]; if (store.authentication.userData.role === "Admin Partner") delete columns[7]; //if (store.authentication.userData.role !== "Admin") delete columns[8]; //if (store.authentication.userData.role === "Admin Partner") delete columns[5]; const deleteData = async (id) => { try { console.log(id); await store.product.delete(id); message.success("Data Berhasil Dihapus"); history.push(LINKS.PRODUCT); } catch (err) { console.log("error", err); message.error("Gagal menghapus"); } }; const handleDelete = (id) => { Modal.confirm({ title: "Are you sure delete this record?", icon: , okText: "Yes", okType: "primary", cancelText: "Batal", onOk() { return deleteData(id); }, onCancel() { console.log("Batal"); }, }); }; const handleCancel = () => { setIdData(""); store.product.visibleModalProduct = false; }; const handleSubmit = async (data) => { console.log(data, "isi data2"); if (idData !== "") { modalLoader.setLoading(true); try { const response = await store.product.update(idData, data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success( response?.body?.message || "Berhasil Ubah Data Produk" ) : message.error(response?.body?.message || "Gagal Ubah Data Produk"); } catch (e) { message.error(e.response?.body?.message || "Gagal Ubah Data Produk"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; setIdData(""); form.resetFields(); } else { modalLoader.setLoading(true); try { const response = await store.product.create(data); response?.body?.statusCode === 201 || response?.body?.statusCode === 200 ? message.success(response?.body?.message || "Berhasil Tambah Produk") : message.error(response?.body?.message || "Gagal Tambah Produk"); } catch (e) { console.log(e, "apa errornya"); message.error(e.response?.body?.message || "Gagal Tambah Produk"); } modalLoader.setLoading(false); store.product.visibleModalProduct = false; setIdData(""); form.resetFields(); } }; const handleRemoveFilter = async () => { store.product.visibleModalFilterProduct = false; store.product.filterSupplier = null; store.product.filterSubCategory = null; setFilterSupplier([]); setFilterSubCategories([]); store.authentication.userData.role === "Admin Partner" ? await store.product.getProductPartner() : await store.product.getData(); //await store.product.getData(); modalLoader.setLoading(false); }; const handleCancelFilter = async () => { store.product.visibleModalFilterProduct = false; //await store.product.getData(); }; const handleSubmitFilter = async () => { store.product.visibleModalFilterProduct = false; store.product.filterSupplier = filterSupplier; store.product.filterSubCategory = filterSubCategories; modalLoader.setLoading(true); store.authentication.userData.role === "Admin Partner" ? await store.product.getProductPartner(filterSubCategories) : await store.product.getData(); //await store.product.getData(); modalLoader.setLoading(false); //store.product.page=1 }; const footerLayoutFilter = [ , , , ]; const handleClickRow = (record, index) => ({ onClick: (event) => { history.push(LINKS.PRODUCT_DETAIL.replace(":id", record.product_id)); }, }); return (
{store.ui.mediaQuery.isDesktop && ( { let pageNumber = page.current; store.authentication.userData.role === "Admin" ? store.product.pageSize = page.pageSize : store.product.pageSizeProductPartner = page.pageSize; store.authentication.userData.role === "Admin" ? store.product.page = pageNumber - 1 : store.product.pageProductPartner = pageNumber - 1 modalLoader.setLoading(true); store.authentication.userData.role === "Admin Partner" ? await store.product.getProductPartner( // store.authentication.profileData.id ) : await store.product.getData(); modalLoader.setLoading(false); }} /> )} {store.ui.mediaQuery.isMobile && ( { store.authentication.userData.role === "Admin" ? store.product.pageSize = pageSize : store.product.pageSizeProductPartner = pageSize; store.authentication.userData.role === "Admin" ? store.product.page = page - 1 : store.product.pageProductPartner = page - 1 modalLoader.setLoading(true); store.authentication.userData.role === "Admin Partner" ? await store.product.getProductPartner( // store.authentication.profileData.id ) : await store.product.getData(); //await store.product.getData(); modalLoader.setLoading(false); }, pageSize: store.authentication.userData.role === "Admin" ? store.product.pageSize : store.product.pageSizeProductPartner, total: store.authentication.userData.role === "Admin Partner" ? store.product.total_data_partner : store.product.total_data, current: store.authentication.userData.role === "Admin" ? store.product.page + 1 : store.product.pageProductPartner + 1, style: { marginBottom: "1rem", marginRight: "1rem" }, }} dataSource={ store.authentication.userData.role === "Admin Partner" ? store.product.dataProductPartner : store.product.data } style={{ padding: 0 }} renderItem={(item) => { return (

{item.product_name}
{/* Harga Beli : {item.current_price_price}
*/} Harga Jual : {item.mark_up_price}

} />

{item?.product_status === "ACTIVE" ? " Tersedia" : "Tidak"}

); }} /> )} { form.resetFields(); handleCancel(); }} onOk={() => { form .validateFields() .then((values) => { console.log(values, "isi form"); handleSubmit(values); form.resetFields(); }) .catch((info) => { console.error("Validate Failed:", info); }); }} >
`Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",") } parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")} /> `Rp. ${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",") } parser={(value) => value.replace(/\Rp.\s?|(,*)/g, "")} />
{ // setFilterSupplier([]); // setFilterSubCategories([]); store.product.filterSupplier = null; store.product.filterSubCategory = null; store.product.visibleModalFilterProduct = false; await store.product.getData(); }} > {store.authentication.userData.role === "Admin" && (
Filter Supplier )} Filter Sub-Categories ); });