import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi"; import { format } from "date-fns"; import { responses } from "../../../../globalUtils/routeDefs/responses.js"; import { standardTemplate } from "../../controller/dm/ordersIn/createTemplate.js"; import { tryCatch } from "../../../../globalUtils/tryCatch.js"; import { standardForCastTemplate } from "../../controller/dm/forecast/createTemplate.js"; import { apiHit } from "../../../../globalUtils/apiHits.js"; const app = new OpenAPIHono(); // const Body = z // .object({ // age: z.number().optional().openapi({ example: 90 }), // //email: z.string().optional().openapi({example: "s.smith@example.com"}), // type: z.string().optional().openapi({ example: "fg" }), // }) // .openapi("User"); app.openapi( createRoute({ tags: ["logistics"], summary: "Gets the standard Forecast Template", method: "get", path: "/bulkforcasttemplate", // request: { // body: { // content: { // "application/json": { schema: Body }, // }, // }, // }, // description: // "Provided a running number and lot number you can consume material.", responses: responses(), }), async (c: any) => { apiHit(c, { endpoint: "/bulkforcasttemplate" }); const defaultFilename = `bulkForcastTemplate-${format( new Date(Date.now()), "M-d-yyyy" )}.xlsx`; const filename = c.req.query("filename") || defaultFilename; const { data, error } = await tryCatch(standardForCastTemplate()); if (error) { return c.json({ success: false, message: "Error creating template", data: error, }); } return new Response(data, { headers: { "Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Content-Disposition": `attachment; filename="${filename}"`, }, }); // return c.json({ // success: data.success, // message: data.message, // data: data.data, // }); } ); export default app;