/** * GET /api/offers/last-offer?source=lead|partner&recordId=N&language=de * Tells the contract modal which package annexes are attachable: the last * sent offer (Strapi attachment or saved conditions), AGB/AVV availability * and versions, static ADSp/Logistik-AGB. */ import refreshTokenHelper from '../../utils/refreshTokenHelper' import errorHandlingHelper from '../../utils/errorHandlingHelper' import forceLogoutHelper from '../../utils/forceLogoutHelper' import { describeLastOffer } from '../../utils/offers/offerAttachments' import { describePackageAvailability } from '../../utils/offers/contractPackage' const handleFunc = async (event: any, authToken: string | null = null) => { const token = authToken ?? await getTokenHelper(event) if (!token) return { status: 401, message: 'Not authenticated' } const q = getQuery(event) const source = q.source === 'lead' ? 'lead' : 'partner' const recordId = Number(q.recordId) const language = q.language === 'en' ? 'en' : 'de' const offer = recordId > 0 ? await describeLastOffer(event, token, source, recordId) : { available: false } return { status: 200, offer, ...describePackageAvailability(language) } } 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 })