39 lines
926 B
TypeScript
39 lines
926 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;
|