import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
import { format } from "date-fns";
import { apiHit } from "../../../../globalUtils/apiHits.js";
import { responses } from "../../../../globalUtils/routeDefs/responses.js";
import { tryCatch } from "../../../../globalUtils/tryCatch.js";

import { standardForCastTemplate } from "../../controller/dm/forecast/createTemplate.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;
