"use client"; import React, { useMemo } from "react"; import SearchBox, { Criterion } from "../SearchBox"; import { useTranslation } from "react-i18next"; import { ProjectResult } from "@/app/api/projects"; import { fetchLastModifiedReport, } from "@/app/api/reports/actions"; import { downloadFile } from "@/app/utils/commonUtil"; import { LastModifiedReportFilter } from "@/app/api/reports"; import dayjs from "dayjs"; import { getPublicHolidaysForNYears } from "@/app/utils/holidayUtils"; interface Props { projects: ProjectResult[]; companyHolidays: String[]; } type SearchQuery = Partial>; type SearchParamNames = keyof SearchQuery; const GenerateLastModifiedReport: React.FC = ({ projects, companyHolidays }) => { const { t } = useTranslation("report"); const projectCombo = projects.map((project) => ({label: `${project.code} - ${project.name}`, value: project.id})) console.log(companyHolidays) const searchCriteria: Criterion[] = useMemo( () => [ { label: t("Date"), paramName: "date", type: "date", }, { label: t("Range"), paramName: "dayRange", type: "autocomplete", options: [ {label: t("30 Days"), value: 30}, {label: t("60 Days"), value: 60}, {label: t("90 Days"), value: 90}, ], needAll: false } ], [t] ); return ( <> { console.log(query); const yearNeeded = parseInt(dayjs(query.date).format("YYYY")) const holidayList: String[] = [...getPublicHolidaysForNYears(1, yearNeeded).map((item) => dayjs(item.date).format("DD/MM/YYYY")), ...companyHolidays] const uniqueHoliday = holidayList.filter((value, index, arr) => index === arr.indexOf(value)); let postData = { dateString: dayjs().format("YYYY-MM-DD").toString(), holidays: uniqueHoliday, dayRange: query.dayRange }; console.log(query.date.length > 0) if (query.date.length > 0) { postData.dateString = query.date } console.log(postData) const response = await fetchLastModifiedReport(postData); if (response) { downloadFile( new Uint8Array(response.blobValue), response.filename!! ); } }} /> ); }; export default GenerateLastModifiedReport;