diff --git a/src/app/api/invoices/index.ts b/src/app/api/invoices/index.ts index 526d028..adab207 100644 --- a/src/app/api/invoices/index.ts +++ b/src/app/api/invoices/index.ts @@ -21,6 +21,7 @@ export interface InvoiceResultV2 { projectCode: string; projectName: string; team: string; + teamId: number; teamCodeName: string; stage: string; paymentMilestone: string; diff --git a/src/components/InvoiceSearch/InvoiceSearch.tsx b/src/components/InvoiceSearch/InvoiceSearch.tsx index 3d729fb..2822bdf 100644 --- a/src/components/InvoiceSearch/InvoiceSearch.tsx +++ b/src/components/InvoiceSearch/InvoiceSearch.tsx @@ -23,8 +23,6 @@ import CreateInvoiceModal from "./CreateInvoiceModal"; interface Props { - issuedInvoice: issuedInvoiceList[]; - receivedInvoice: receivedInvoiceList[]; invoices: invoiceList[]; } @@ -45,13 +43,13 @@ type SearchParamNames = keyof SearchQuery; type SearchQuery2 = Partial>; type SearchParamNames2 = keyof SearchQuery2; -const InvoiceSearch: React.FC = ({ issuedInvoice, receivedInvoice, invoices }) => { +const InvoiceSearch: React.FC = ({ invoices }) => { // console.log(invoices) const { t } = useTranslation("Invoice"); const [tabIndex, setTabIndex] = useState(0); - const [filteredIssuedInvoices, setFilteredIssuedInvoices] = useState(issuedInvoice); - const [filteredReceivedInvoices, setFilteredReceivedInvoices] = useState(receivedInvoice); + // const [filteredIssuedInvoices, setFilteredIssuedInvoices] = useState(issuedInvoice); + // const [filteredReceivedInvoices, setFilteredReceivedInvoices] = useState(receivedInvoice); const [filteredIvoices, setFilterInovices] = useState(invoices); const searchCriteria: Criterion[] = useMemo( @@ -67,16 +65,7 @@ const InvoiceSearch: React.FC = ({ issuedInvoice, receivedInvoice, invoic { label: t("Issue Date"), label2: t("Issue Date To"), paramName: "invoiceDate", type: "dateRange" }, { label: t("Settle Date"), label2: t("Settle Date To"), paramName: "dueDate", type: "dateRange" }, ], - [t, issuedInvoice], - ); - - const searchCriteria2: Criterion[] = useMemo( - () => [ - { label: t("Invoice No"), paramName: "invoiceNo", type: "text" }, - { label: t("Project Code"), paramName: "projectCode", type: "text" }, - { label: t("Recipt Date"), label2: t("Recipt Date To"), paramName: "receiptDate", type: "dateRange" }, - ], - [t, issuedInvoice], + [t, invoices], ); const onReset = useCallback(() => { diff --git a/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx b/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx index 1c7a116..879efe1 100644 --- a/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx +++ b/src/components/InvoiceSearch/InvoiceSearchWrapper.tsx @@ -4,6 +4,8 @@ import InvoiceSearch from "./InvoiceSearch"; import InvoiceSearchLoading from "./InvoiceSearchLoading"; import { fetchInvoicesV3, fetchIssuedInvoices, fetchReceivedInvoices, issuedInvoiceList, issuedInvoiceResult } from "@/app/api/invoices"; import { INPUT_DATE_FORMAT, convertDateArrayToString, convertDateToString, moneyFormatter, timestampToDateString } from "@/app/utils/formatUtil"; +import { fetchTeam } from "@/app/api/team"; +import { fetchUserStaff } from "@/app/utils/fetchUtil"; interface SubComponents { @@ -16,39 +18,16 @@ interface SubComponents { // } const InvoiceSearchWrapper: React.FC & SubComponents = async () => { - const issuedInvoices = await fetchIssuedInvoices() - const receivedInvoices = await fetchReceivedInvoices() + const userStaff = await fetchUserStaff() + const teamId = userStaff?.teamId const invoices = await fetchInvoicesV3() - - // console.log(invoices) - - const convertedIssedInvoices = issuedInvoices.map((invoice)=>{ - return{ - id: invoice.id, - invoiceNo: invoice.invoiceNo, - projectCode: invoice.projectCode, - projectName: invoice.projectName, - stage: invoice.stage, - paymentMilestone: invoice.paymentMilestone, - invoiceDate: convertDateArrayToString(invoice.invoiceDate, INPUT_DATE_FORMAT, false)!!, - dueDate: convertDateArrayToString(invoice.dueDate, INPUT_DATE_FORMAT, false)!!, - issuedAmount: moneyFormatter.format(invoice.issuedAmount) - } - }) - const convertedReceivedInvoices = receivedInvoices.map((invoice)=>{ - return{ - id: invoice.id, - invoiceNo: invoice.invoiceNo, - projectCode: invoice.projectCode, - projectName: invoice.projectName, - team: invoice.team, - receiptDate: convertDateArrayToString(invoice.receiptDate, INPUT_DATE_FORMAT, false)!!, - receivedAmount: moneyFormatter.format(invoice.receivedAmount) - } - }) + let filteredInvoice = invoices + if (teamId) { + filteredInvoice = invoices.filter(invoice => invoice.teamId === teamId) + } - const convertedInvoices = invoices.map((invoice)=>{ + const convertedInvoices = filteredInvoice.map((invoice)=>{ return{ id: invoice.id, invoiceNo: invoice.invoiceNo, @@ -64,8 +43,6 @@ const InvoiceSearchWrapper: React.FC & SubComponents = async () => { }) return diff --git a/src/components/ProjectSearch/ProjectSearchWrapper.tsx b/src/components/ProjectSearch/ProjectSearchWrapper.tsx index 022303b..2d7db12 100644 --- a/src/components/ProjectSearch/ProjectSearchWrapper.tsx +++ b/src/components/ProjectSearch/ProjectSearchWrapper.tsx @@ -2,7 +2,9 @@ import { fetchProjectCategories, fetchProjects } from "@/app/api/projects"; import React from "react"; import ProjectSearch from "./ProjectSearch"; import ProjectSearchLoading from "./ProjectSearchLoading"; -import { fetchUserAbilities } from "@/app/utils/fetchUtil"; +import { fetchUserAbilities, fetchUserStaff } from "@/app/utils/fetchUtil"; +import { authOptions } from "@/config/authConfig"; +import { getServerSession } from "next-auth"; interface SubComponents { Loading: typeof ProjectSearchLoading; @@ -10,11 +12,16 @@ interface SubComponents { const ProjectSearchWrapper: React.FC & SubComponents = async () => { const projectCategories = await fetchProjectCategories(); + const userStaff = await fetchUserStaff() + const teamId = userStaff?.teamId const projects = await fetchProjects(); - + let filteredProjects = projects + if (teamId) { + filteredProjects = projects.filter(project => project.teamId === teamId) + } const abilities = await fetchUserAbilities() - return ; + return ; }; ProjectSearchWrapper.Loading = ProjectSearchLoading;