/** * GET /api/offers/conditions?source=lead|partner&recordId=N * Returns the record's saved offer/contract conditions JSON (see * server/utils/offers/offerConditions.ts). Fail-soft: a missing * offer_conditions column or empty value yields { conditions: {} }. */ import refreshTokenHelper from '../../../utils/refreshTokenHelper' import errorHandlingHelper from '../../../utils/errorHandlingHelper' import forceLogoutHelper from '../../../utils/forceLogoutHelper' import { readOfferConditions } from '../../../utils/offers/offerConditions' const handleFunc = async (event: any, authToken: string | null = null) => { const token = authToken ?? await getTokenHelper(event) if (!token) return { status: 401, message: 'Not authenticated' } const query = getQuery(event) const source = query.source === 'lead' ? 'lead' : 'partner' const recordId = Number(query.recordId) if (!(recordId > 0)) return { status: 400, message: 'recordId required' } const conditions = await readOfferConditions(event, token, source, recordId) return { status: 200, conditions } } 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: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })