45 lines
970 B
TypeScript
45 lines
970 B
TypeScript
import type { RequestHandler } from "express";
|
|
|
|
import {
|
|
getReportData,
|
|
ReportParameters
|
|
} from "../../helpers/lotOccupancyDB/getReportData.js";
|
|
|
|
import papaparse from "papaparse";
|
|
|
|
export const handler: RequestHandler = (request, response) => {
|
|
const reportName = request.params.reportName;
|
|
|
|
let rows: unknown[];
|
|
|
|
switch (reportName) {
|
|
default:
|
|
rows = getReportData(reportName, request.query as ReportParameters);
|
|
break;
|
|
}
|
|
|
|
if (!rows) {
|
|
return response.status(404).json({
|
|
success: false,
|
|
message: "Report Not Found"
|
|
});
|
|
}
|
|
|
|
const csv = papaparse.unparse(rows);
|
|
|
|
response.setHeader(
|
|
"Content-Disposition",
|
|
"attachment; filename=" +
|
|
reportName +
|
|
"-" +
|
|
Date.now().toString() +
|
|
".csv"
|
|
);
|
|
|
|
response.setHeader("Content-Type", "text/csv");
|
|
|
|
response.send(csv);
|
|
};
|
|
|
|
export default handler;
|