import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
import { responses } from "../../../globalUtils/routeDefs/responses.js";
import { tryCatch } from "../../../globalUtils/tryCatch.js";
import { getCycleCountCheck } from "../controller/warehouse/cycleCountChecks/getCycleCountCheck.js";
import { getPPOO } from "../controller/warehouse/ppoo/getPPOO.js";
import { apiHit } from "../../../globalUtils/apiHits.js";
import { createSSCC } from "../../../globalUtils/createSSCC.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: "Returns returns sscc based on running number",
        method: "post",
        path: "/getsscc",
        // 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: "/getsscc" });
        const { data, error: bodyError } = (await tryCatch(
            c.req.json()
        )) as any;

        if (bodyError) {
            return c.json({
                success: false,
                message: "Missing critical data.",
                data: bodyError,
            });
        }

        if (!data.runningNr) {
            return c.json({
                success: false,
                message: "Missing critical data.",
                data: [],
            });
        }

        const { data: sscc, error } = await tryCatch(
            createSSCC(data.runningNr)
        );

        if (error) {
            return c.json({
                success: false,
                message: "Error creating sscc.",
                data: error,
            });
        }

        return c.json({
            success: true,
            message: "SSCC",
            data: sscc,
        });
    }
);
export default app;
