/**
 * GET /api/integrations/label-templates
 *
 * Label Designer templates for the current org (org-specific + shared rows,
 * AD_Org_ID eq 0). Backed by the iDempiere CUST_LabelTemplate table. The design
 * itself lives in the CUST_DesignJSON text column; the client parses it.
 *
 * Returns the raw iDempiere shape `{ records: [...] }` — the client maps
 * tolerantly (OData casing varies by model).
 */
import refreshTokenHelper from "../../../utils/refreshTokenHelper"
import forceLogoutHelper from "../../../utils/forceLogoutHelper"
import errorHandlingHelper from "../../../utils/errorHandlingHelper"

const handleFunc = async (event: any, authToken: any = null) => {
  let data: any = {}
  const token = authToken ?? await getTokenHelper(event)
  const organizationId = Number(getCookie(event, 'logship_organization_id')) || 0

  const res: any = await event.context.fetch(
    `models/cust_labeltemplate?$filter=(AD_Org_ID eq ${organizationId} or AD_Org_ID eq 0) and IsActive eq true`,
    'GET',
    token,
    null
  )
  if (res) data = res

  return data
}

export default defineEventHandler(async (event) => {
  let data: any = {}

  try {
    data = await handleFunc(event)
  } catch (err: any) {
    try {
      let authToken: any = await refreshTokenHelper(event)
      data = await handleFunc(event, authToken)
    } catch (error) {
      data = errorHandlingHelper(err?.data ?? err, error?.data ?? error)
      forceLogoutHelper(event, data)
    }
  }

  return data
})
