diff --git a/server/services/ocme/route/pickedUp.ts b/server/services/ocme/route/pickedUp.ts new file mode 100644 index 0000000..6d7ef88 --- /dev/null +++ b/server/services/ocme/route/pickedUp.ts @@ -0,0 +1,89 @@ +import {createRoute, OpenAPIHono, z} from "@hono/zod-openapi"; +import {postLabelData} from "../controller/postRunningNr.js"; +import {apiHit} from "../../../globalUtils/apiHits.js"; +import {pickedup} from "../controller/pickedup.js"; + +const app = new OpenAPIHono(); + +const PostRunningNr = z.object({ + sscc: z.string().optional().openapi({example: "00090103830005710997"}), + runningNr: z.string().optional().openapi({example: "localhost"}), + areaFrom: z.string().optional().openapi({example: "The server we are going to connect to"}), + completed: z.boolean().optional().openapi({example: true}), + all: z.boolean().optional().openapi({example: false}), +}); + +app.openapi( + createRoute({ + tags: ["ocme"], + summary: "Picks up a pallet in the system.", + method: "patch", + description: + "removes the pallet(s) from showing as needed to be picked up, we clear everything related to the pallet number to reduce the risk of a mix, passing `all` will just clear everything that is pending.", + path: "/pickedup", + request: { + body: { + content: { + "application/json": {schema: PostRunningNr}, + }, + }, + }, + responses: { + 200: { + content: { + "application/json": { + schema: z.object({ + success: z.boolean().openapi({example: true}), + message: z.string().openapi({example: "Starter"}), + // data: z + // .array(z.object({sscc: z.string().optional()})) + // .optional() + // .openapi({example: []}), + }), + }, + }, + description: "Response message", + }, + 400: { + content: { + "application/json": { + schema: z.object({ + success: z.boolean().openapi({example: false}), + message: z.string().optional().openapi({example: "Internal Server error"}), + data: z.array(z.object({})).optional().openapi({example: []}), + }), + }, + }, + description: "Internal Server Error", + }, + // 401: { + // content: { + // "application/json": { + // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}), + // }, + // }, + // description: "Unauthorized", + // }, + 500: { + content: { + "application/json": { + schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}), + }, + }, + description: "Internal Server Error", + }, + }, + }), + async (c) => { + // make sure we have a vaid user being accessed thats really logged in + try { + const data = await c.req.json(); + apiHit(c, {endpoint: "api/ocme/pickedup", lastBody: data}); + const postPallet = await pickedup(data); + return c.json({success: postPallet.success, message: postPallet.message, data: postPallet.data}, 200); + } catch (error) { + return c.json({success: false, message: "There was an error getting ocmeInfo data", data: error}, 400); + } + } +); +export default app;