import React, { useCallback, useEffect, useState, useRef, useContext, } from 'react'; import { useNavigate, useLocation } from 'react-router-dom'; import { useDispatch } from 'react-redux'; import { Space } from 'antd'; import { EditFilled, DeleteFilled, PlusOutlined, ReloadOutlined, PrinterFilled, } from '@ant-design/icons'; import { Messages } from '../../Components/Notifications/Messages'; import { Search } from '../../Components/Forms/Search'; import { changeBreadCrumb, getEmpAccess, } from '../../Features/AppPage/CenterPage.js'; import Buttons from '../../Components/Forms/Buttons'; import { getSession, printDiv, validateSafeInput } from '../../Services/Others'; import { deleteCombo, putComboName, getCombolist, } from '../../Features/ComboMaster/ComboMaster.js'; import FormHeader from '../PageComponents/FormHeader.jsx'; import { IoEye } from 'react-icons/io5'; import { Table, Form, Input } from 'antd'; import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx'; import { useAuth } from '../../AuthContext.jsx'; import { DropDowns } from '../../Components/Forms/DropDown.jsx'; import { InputField } from '../../Components/Forms/InputField.jsx'; import QRCode from 'qrcode'; const subDirectory = import.meta.env.ENV_BASE_URL; const items = [ { name: 'Home', link: `${subDirectory}app-page/home`, }, { name: 'ComboProduct', link: `${subDirectory}setting/combo-master`, }, ]; const ComboList = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( (e) => e?.MenuName === 'Add Product' ); console.log(SadminuserAccess, 'SadminuserAccessSadminuserAccess'); const navigateTo = useNavigate(); const dispatch = useDispatch(); const location = useLocation(); const formRef = useRef(null); const [form] = Form.useForm(); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserId = getSession('UserId'); const UserType = getSession('UserType'); const [tabledata, setTabledata] = useState([]); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); const [filteredInfo, setFilteredInfo] = useState({}); const [searchedText, setSearchedText] = useState(''); const [sortedInfo, setSortedInfo] = useState({}); const [page, setpage] = useState(1); const [OrderProductdata, setOrderProductdata] = useState([]); const [OrderDataModel, setOrderDataModal] = useState(false); const [editableRowIndex, setEditableRowIndex] = useState(null); const [empData, setEmpData] = useState(); const [addnewAccess, setaddnewAccess] = useState(true); const [proName, setProName] = useState(); const [ProdId, setProdId] = useState(); const [open, setOpen] = useState(false); const [dropdownValue, setDropdownValue] = useState(); const [copies, setCopies] = useState(); const [base64Image, setBase64Image] = useState(null); const [qrCodeUrl, setQrCodeUrl] = useState(''); console.log(tabledata, 'tabledatatabledata'); const handelAddButton = () => { navigateTo(`${subDirectory}setting/combo-master/new`); }; const Coresdata = [ { option: '15X15 6cross', id: 0, }, { option: '22X35 3cross', id: 1, }, { option: '25X25 4cross', id: 2, }, { option: '25X50 2cross', id: 3, }, ]; useEffect(() => { try { if (location?.state?.Notiffy) { setMessageType(location?.state?.Notiffy.messageType); setMessageData(location?.state?.Notiffy.messageData); } } catch (err) { console.log(err, 'err'); } }, []); const handleChange = (pagination, filters, sorter) => { setFilteredInfo(filters); setSortedInfo(sorter); }; const handlePageChange = (current) => { setpage(current); }; useEffect(() => { dispatch(changeBreadCrumb({ items: items })); TableData(); // if (UserType === "Employee") { // fetchApi() // } }, []); useEffect(() => { if (UserType === 'Employee') { fetchApi(); } }, [UserType]); useEffect(() => { let hasAccess = false; if (UserType === 'Admin' || UserType === 'Super Admin') { hasAccess = true; } else if (UserType === 'Employee') { hasAccess = empData?.AddAccess === 'Y'; } else if (UserType === 'Super Admin User') { hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; } setaddnewAccess(!hasAccess); }, [empData, SAAccessCommonMaster, UserType]); useEffect(() => { QRCode?.toDataURL(ProdId) .then((url) => { setQrCodeUrl(url); }) .catch((error) => { console.error('Error generating QR code:', error); }); }, [ProdId]); useEffect(() => { async function fetchImage() { try { const base64 = await imageUrlToBase64(qrCodeUrl); setBase64Image(base64); } catch (error) { setConversionError(error.message || 'Error converting image'); } } if (qrCodeUrl) { fetchImage(); } }, [qrCodeUrl]); const imageUrlToBase64 = async (url) => { try { const response = await fetch(url); const blob = await response.blob(); return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => resolve(reader.result); reader.onerror = reject; reader.readAsDataURL(blob); }); } catch (error) { console.error('Error fetching or converting image:', error); throw error; } }; const fetchApi = async () => { let data = { CompId: CompId, BranchId: BranchId, AppId: AppId, EmpId: UserId, }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( (item) => item.ConfigName === 'Add Product' ); setEmpData(datas?.[0]); }; // GETTTING TABLE GET const TableData = async () => { let data = { CompId: CompId, BranchId: BranchId, AppId: AppId }; let response = await dispatch(getCombolist(data)).unwrap(); if (response?.data?.statusCode == 1) { setTabledata( response?.data?.data?.filter((item) => item.ActiveStatus == 'A') ); } }; //EDIT FUNCTION const actionsFormatter = (row, rowIndex) => { setEditableRowIndex(rowIndex); let tabledatasss = tabledata.map((item) => ({ ...item, key: `${item.ComboId}`, })); setTabledata(tabledatasss); }; const onSearch = (value) => { setSearchedText(value); }; const onSearchChange = (e) => { setSearchedText(e?.target?.value); }; const statusFormatter = async (row) => { let deleteData = { ComboId: row.ComboId, ComboInwardDetails: row.ComboInwardDetails, UpdatedBy: UserId, }; let response = await dispatch(deleteCombo(deleteData)).unwrap(); if (response?.data?.statusCode == 1) { TableData(); setMessageType('success'); setMessageData( row.ActiveStatus === 'A' ? 'In-Activated Successfully' : 'Activated Successfully' ); await dispatch( getCombolist({ CompId: CompId, BranchId: BranchId, AppId: AppId, ActiveStatus: 'A', }) ).unwrap(); } else { setMessageType('error'); setMessageData('Operation failed. Please try again.'); } }; const onComplete = useCallback(() => { setMessageData(null); setMessageType(null); }, []); const ViewOrderdetails = (ComboDetails, record, ComboInwardDetails) => { setOrderProductdata(ComboDetails); setOrderDataModal(true); }; const handleOrdermodalCancel = () => { setOrderDataModal(false); setOrderProductdata([]); }; const OrderdataColumns = [ { title: 'Sl.No', key: 'sno', align: 'center', width: '60px', render: (text, object, index) => ( {(page - 1) * 10 + index + 1} ), }, { title: 'Batch No', dataIndex: 'ComboInwardDtlId', key: 'ComboInwardDtlId', align: 'left', render: (text, record) => {text}, }, { title: 'Count', dataIndex: 'ReceivedQty', key: 'ReceivedQty', align: 'right', render: (text, record) => {text}, }, { title: 'Product Name', dataIndex: 'ProdName', key: 'ProdName', align: 'left', render: (text, record) => (