import { Button, Checkbox, Col, Table } from "antd"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { alphaSort } from "../../utils/sorters"; export default function CDKCustomerSelector({ bodyshop, socket }) { const { t } = useTranslation(); const [open, setOpen] = useState(false); const [customerList, setCustomerList] = useState([]); const [selectedCustomer, setSelectedCustomer] = useState(null); useEffect(() => { if (!socket) return; const handleCdkSelectCustomer = (list) => { setOpen(true); setCustomerList(Array.isArray(list) ? list : []); setSelectedCustomer(null); }; socket.on("cdk-select-customer", handleCdkSelectCustomer); return () => { socket.off("cdk-select-customer", handleCdkSelectCustomer); }; }, [socket]); const onUseSelected = () => { if (!selectedCustomer) return; setOpen(false); socket.emit("cdk-selected-customer", selectedCustomer); setSelectedCustomer(null); }; const onUseGeneric = () => { const generic = bodyshop.cdk_configuration?.generic_customer_number || null; setOpen(false); socket.emit("cdk-selected-customer", generic); setSelectedCustomer(null); }; const onCreateNew = () => { setOpen(false); socket.emit("cdk-selected-customer", null); setSelectedCustomer(null); }; if (!open) return null; const columns = [ { title: t("jobs.fields.dms.id"), dataIndex: ["id", "value"], key: "id" }, { title: t("jobs.fields.dms.vinowner"), dataIndex: "vinOwner", key: "vinOwner", render: (_t, r) => }, { title: t("jobs.fields.dms.name1"), dataIndex: ["name1", "fullName"], key: "name1", sorter: (a, b) => alphaSort(a.name1?.fullName, b.name1?.fullName) }, { title: t("jobs.fields.dms.address"), key: "address", render: (record) => `${record.address?.addressLine && record.address.addressLine[0]}, ${record.address?.city} ${ record.address?.stateOrProvince } ${record.address?.postalCode}` } ]; const rowKey = (r) => r.id?.value || r.customerId; return ( (
)} pagination={{ placement: "top" }} columns={columns} rowKey={rowKey} dataSource={customerList} rowSelection={{ onSelect: (r) => { const key = r.id?.value || r.customerId; setSelectedCustomer(key ? String(key) : null); }, type: "radio", selectedRowKeys: selectedCustomer ? [selectedCustomer] : [] }} /> ); }