80 lines
1.8 KiB
TypeScript
80 lines
1.8 KiB
TypeScript
import { format } from "date-fns";
|
|
import { Router } from "express";
|
|
import { requireAuth } from "../middleware/auth.middleware.js";
|
|
import { excelTemplate, type Template } from "../utils/excelTemplates.utils.js";
|
|
import { apiReturn } from "../utils/returnHelper.utils.js";
|
|
import { tryCatch } from "../utils/trycatch.utils.js";
|
|
|
|
const r = Router();
|
|
|
|
r.get("/", requireAuth, async (req, res) => {
|
|
const { filename } = req.query;
|
|
|
|
const templateNames = ["orders", "forecast"];
|
|
if (typeof filename !== "string" || !templateNames.includes(filename)) {
|
|
return apiReturn(res, {
|
|
success: false,
|
|
level: "error",
|
|
module: "dm",
|
|
subModule: "template",
|
|
message: "You are required to pass over the template name.",
|
|
data: [],
|
|
status: 500,
|
|
});
|
|
}
|
|
|
|
const name = `${filename}-Template-${format(
|
|
new Date(Date.now()),
|
|
"M-d-yyyy",
|
|
)}.xlsx`;
|
|
|
|
const standardHeaders = [
|
|
"CustomerArticleNumber",
|
|
"CustomerOrderNumber",
|
|
"CustomerLineNumber",
|
|
"CustomerRealeaseNumber",
|
|
"Quantity",
|
|
"DeliveryDate",
|
|
"CustomerID",
|
|
"Remark",
|
|
// "InvoiceID",
|
|
];
|
|
|
|
const forecastHeaders = [
|
|
"CustomerArticleNumber",
|
|
"Quantity",
|
|
"RequirementDate",
|
|
"CustomerID",
|
|
];
|
|
|
|
const template = {
|
|
name,
|
|
headers: filename === "orders" ? standardHeaders : forecastHeaders,
|
|
} as Template;
|
|
|
|
//console.log(template);
|
|
const { data, error } = await tryCatch(excelTemplate(template));
|
|
|
|
if (error || !data) {
|
|
return apiReturn(res, {
|
|
success: false,
|
|
level: "error",
|
|
module: "dm",
|
|
subModule: "template",
|
|
message: "There was an error creating the Excel template.",
|
|
data: [],
|
|
status: 500,
|
|
});
|
|
}
|
|
|
|
res.set({
|
|
"Content-Type":
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
"Content-Disposition": `attachment; filename="${name}"`,
|
|
});
|
|
|
|
return res.status(200).send(data);
|
|
});
|
|
|
|
export default r;
|