/** * GET /api/settings/software-catalog/lists * The five AD_Reference lists the catalog tables use (dropdown contents of the * settings page) → { supportLevel, itemType, featureGroup, featureMode, priceUnit: * [{ id, name }] , missing: [referenceName] }. Read through getLeadRefList (10-min cache). */ import refreshTokenHelper from '../../../utils/refreshTokenHelper' import errorHandlingHelper from '../../../utils/errorHandlingHelper' import forceLogoutHelper from '../../../utils/forceLogoutHelper' import { getLeadRefList } from '../../../utils/leads/leadQualification' const REFS: Record = { supportLevel: 'CUST_SoftwareSupportLevel', itemType: 'CUST_SoftwareItemType', featureGroup: 'CUST_SoftwareFeatureGroup', featureMode: 'CUST_SoftwareFeatureMode', priceUnit: 'CUST_SoftwarePriceUnit' } const handleFunc = async (event: any, authToken: string | null = null) => { const token = authToken ?? await getTokenHelper(event) if (!token) return { status: 401, message: 'Not authenticated' } const out: any = { status: 200, missing: [] as string[] } for (const [key, refName] of Object.entries(REFS)) { try { out[key] = await getLeadRefList(event, token, refName) } catch (err: any) { const s = Number(err?.statusCode ?? err?.status ?? err?.response?.status) if (s === 401) throw err out[key] = [] out.missing.push(refName) } } return out } 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 })