/** * POST /api/materials/locators/bulk-create — create many locators in one warehouse. * Body { warehouseId, organizationId, items: [{ x, y, z, value? }], priorityNo?, locatorTypeId?, isActive? } (≤ 500 items) * Response { status, created[], skipped[], failed[], totalRequested } */ import refreshTokenHelper from '../../../utils/refreshTokenHelper' import forceLogoutHelper from '../../../utils/forceLogoutHelper' import errorHandlingHelper from '../../../utils/errorHandlingHelper' import getTokenHelper from '../../../utils/getTokenHelper' import { MAX_BULK_ITEMS, bulkCreateLocators } from '../../../utils/locatorBulk' const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const body = await readBody(event) const warehouseId = Number(body?.warehouseId), organizationId = Number(body?.organizationId) if (!warehouseId || !organizationId) return { status: 400, message: 'warehouseId and organizationId are required' } const items = Array.isArray(body?.items) ? body.items : [] if (!items.length) return { status: 400, message: 'items required' } if (items.length > MAX_BULK_ITEMS) return { status: 400, message: `max ${MAX_BULK_ITEMS} items per call` } const res = await bulkCreateLocators(event, token, { warehouseId, organizationId, items, priorityNo: Number(body?.priorityNo) || 50, isActive: body?.isActive !== false, locatorTypeId: body?.locatorTypeId ? Number(body.locatorTypeId) : null }) return { status: 200, ...res } } export default defineEventHandler(async (event) => { let data: any = {} try { data = await handleFunc(event) } catch (err: any) { try { const authToken: any = await refreshTokenHelper(event) data = await handleFunc(event, authToken) } catch (error: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })