import { useLazyQuery } from "@apollo/client"; import { AutoComplete, Divider, Input, Space } from "antd"; import _ from "lodash"; import React from "react"; import { useTranslation } from "react-i18next"; import { Link, useHistory } from "react-router-dom"; import { GLOBAL_SEARCH_QUERY } from "../../graphql/search.queries"; import PhoneNumberFormatter from "../../utils/PhoneFormatter"; import AlertComponent from "../alert/alert.component"; import OwnerNameDisplay, { OwnerNameDisplayFunction, } from "../owner-name-display/owner-name-display.component"; import VehicleVinDisplay from "../vehicle-vin-display/vehicle-vin-display.component"; export default function GlobalSearch() { const { t } = useTranslation(); const history = useHistory(); const [callSearch, { loading, error, data }] = useLazyQuery(GLOBAL_SEARCH_QUERY); const executeSearch = (v) => { if ( v && v.variables.search && v.variables.search !== "" && v.variables.search.length >= 3 ) callSearch(v); }; const debouncedExecuteSearch = _.debounce(executeSearch, 750); const handleSearch = (value) => { console.log("Handle Search"); debouncedExecuteSearch({ variables: { search: value } }); }; const renderTitle = (title) => { return {title}; }; const options = data ? [ { label: renderTitle(t("menus.header.search.jobs")), options: data.search_jobs.map((job) => { return { key: job.id, value: job.ro_number || "N/A", label: ( }> {job.ro_number || t("general.labels.na")} {`${job.status || ""}`} {`${job.v_model_yr || ""} ${job.v_make_desc || ""} ${ job.v_model_desc || "" }`} {`${job.clm_no || ""}`} ), }; }), }, { label: renderTitle(t("menus.header.search.owners")), options: data.search_owners.map((owner) => { return { key: owner.id, value: OwnerNameDisplayFunction(owner), label: ( } wrap> {owner.ownr_ph1} {owner.ownr_ph2} ), }; }), }, { label: renderTitle(t("menus.header.search.vehicles")), options: data.search_vehicles.map((vehicle) => { return { key: vehicle.id, value: `${vehicle.v_model_yr || ""} ${ vehicle.v_make_desc || "" } ${vehicle.v_model_desc || ""}`, label: ( }> {`${vehicle.v_model_yr || ""} ${ vehicle.v_make_desc || "" } ${vehicle.v_model_desc || ""}`} {vehicle.plate_no || ""} {vehicle.v_vin || ""} ), }; }), }, { label: renderTitle(t("menus.header.search.payments")), options: data.search_payments.map((payment) => { return { key: payment.id, value: `${payment.job.ro_number} ${payment.payer} ${payment.amount}`, label: ( }> {payment.paymentnum} {payment.job.ro_number} {payment.memo || ""} {payment.amount || ""} {payment.transactionid || ""} ), }; }), }, { label: renderTitle(t("menus.header.search.bills")), options: data.search_bills.map((bill) => { return { key: bill.id, value: `${bill.invoice_number} - ${bill.vendor.name}`, label: ( }> {bill.invoice_number} {bill.vendor.name} {bill.date} ), }; }), }, { label: renderTitle(t("menus.header.search.phonebook")), options: data.search_phonebook.map((pb) => { return { key: pb.id, value: `${pb.firstname || ""} ${pb.lastname || ""} ${ pb.company || "" }`, label: ( }> {`${pb.firstname || ""} ${pb.lastname || ""} ${ pb.company || "" }`} {pb.phone1} {pb.email} ), }; }), }, ] : []; if (error) return ; return ( { history.push(opt.label.props.to); }} > ); }