import React, { useCallback, useEffect, useState } from 'react';
import {
EditFilled,
DeleteFilled,
PlusOutlined,
ReloadOutlined,
} from '@ant-design/icons';
import { Messages } from '../../Components/Notifications/Messages';
import FormHeader from '../PageComponents/FormHeader';
import Buttons from '../../Components/Forms/Buttons';
import { Tables } from '../../Components/Tables/Table';
import { Space, Table } from 'antd';
import { useDispatch } from 'react-redux';
import {
getWholeSaleProductEntry,
getwsPreorder,
} from '../../Features/WholeSale/ProductEntry';
import { getSession } from '../../Services/Others';
import { IoEye } from 'react-icons/io5';
import { DefaultModal } from '../../Components/Modal/DefaultModal';
import { useNavigate } from 'react-router-dom';
import {
changeBreadCrumb,
getEmpAccess,
} from '../../Features/AppPage/CenterPage';
import Search from '../../Components/Forms/Search';
import { DatePicProd } from '../../Components/Forms/DatePickerProduct';
import moment from 'moment';
import { useAuth } from '../../AuthContext';
const subDirectory = import.meta.env.BASE_URL;
const WsPreOrderList = () => {
const { SadminuserAccess } = useAuth();
let SAAccessCommonMaster = SadminuserAccess?.find(
(e) => e?.MenuName === 'Preorder'
);
const dispatch = useDispatch();
const navigate = useNavigate();
const CompId = getSession('CompId');
const BranchId = getSession('BranchId');
const AppId = getSession('AppId');
const UserType = getSession('UserType');
const [messageType, setMessageType] = useState(null);
const [messageData, setMessageData] = useState(null);
const [page, setpage] = useState(1);
const [page2, setpage2] = useState(1);
const [filteredInfo, setFilteredInfo] = useState({});
const [sortedInfo, setSortedInfo] = useState({});
const [CommonDataFilter, setCommonDataFilter] = useState([]);
const [ProductDetailopen, setProductDetailopen] = useState(false);
const [Productdata, setProductdata] = useState([]);
const [searchedText, setSearchedText] = useState('');
const [WsPreorderDate, setWsPreorderDate] = useState();
const [empData, setEmpData] = useState();
const [addnewAccess, setaddnewAccess] = useState(true);
const items = [
{
name: 'Home',
link: `${subDirectory}app-page/home`,
},
{
name: 'Preorder',
link: `${subDirectory}setting/wholesale-preorder`,
},
];
useEffect(() => {
dispatch(changeBreadCrumb({ items: items }));
const todayDate = new Date()?.toISOString()?.split('T')[0];
FetchFilterData(todayDate);
// 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]);
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 === 'Preorder'
);
setEmpData(datas?.[0]);
};
const formatDate = (dateString) => {
const date = new Date(dateString);
const day = String(date.getDate()).padStart(2, '0'); // Ensure two digits
const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based
const year = date.getFullYear();
return `${day}-${month}-${year}`;
};
const ActionFormatter = (row, rowIndex) => {
navigate(
`${subDirectory}setting/wholesale-preorder/update`,
{ state: { editstate: row } },
{ key: rowIndex }
);
};
const columns = [
{
title: 'Sl.No',
key: 'sno',
align: 'center',
width: '100px',
render: (text, object, index) => (
{(page - 1) * 10 + index + 1}
),
},
{
title: 'Customer Name',
dataIndex: 'CustName',
key: 'CustName',
width: '100px',
render: (text, record, row) => (
{record?.CustShortName || record?.CustName || record?.CustMobile}
),
filteredValue: [searchedText],
onFilter: (value, record) => {
return (
String(record.CustShortName)
?.toLowerCase()
.includes(value?.toLowerCase()) ||
String(record.CustName)?.toLowerCase().includes(value?.toLowerCase()) ||
String(record.DueDate)?.toLowerCase().includes(value?.toLowerCase()) ||
String(record.CustMobile)?.toLowerCase().includes(value?.toLowerCase())
);
},
sorter: (a, b) => a?.CustName?.length - b?.CustName?.length,
sortOrder: sortedInfo.columnKey === 'CustName' ? sortedInfo.order : null,
ellipsis: true,
},
{
title: 'Mobile No',
dataIndex: 'CustMobile',
key: 'CustMobile',
width: '100px',
render: (text) => (
{text}
),
},
{
title: 'Date',
dataIndex: 'DueDate',
key: 'DueDate',
width: '100px',
render: (text) => (
{formatDate(text)}
),
},
{
title: 'Product_Details',
key: 'ProductDetails',
dataIndex: 'ProductDetails',
align: 'center',
width: '100px',
render: (text, row) => (