import { string } from 'alga-js' import refreshTokenHelper from "../../../utils/refreshTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" import fetchHelper from "../../../utils/fetchHelper" // Returns ONLY the order sources whose marketplace is eBay, for the payout // browser's source picker. Filters in JS on Marketplace.identifier === 'ebay' // (fallback marketplace id '5', the eBay entry in the Marketplace reference list). const handleFunc = async (event: any, authToken: any = null) => { let data: any = { records: [] } const token = authToken ?? await getTokenHelper(event) const res: any = await fetchHelper( event, `models/c_ordersource?$filter=${string.urlEncode('isActive eq true')}&$orderby=${string.urlEncode('Name asc')}`, 'GET', token, null ) const records = (res?.records || []) .filter((os: any) => { const mp = os?.Marketplace const identifier = String(mp?.identifier || '').toLowerCase() return identifier === 'ebay' || String(mp?.id) === '5' || String(os?.marketplace) === '5' }) .map((os: any) => { const clientId = os.SHOPWARE_KEY || os.marketplace_key const clientSecret = os.SHOPWARE_SECRET || os.marketplace_secret return { id: os.id, name: os.Name || '', orgId: os?.AD_Org_ID?.id ?? null, orgName: os?.AD_Org_ID?.identifier || '', value: os.Value || '', description: os.Description || '', marketplaceIdentifier: os?.Marketplace?.identifier || '', marketplaceId: os?.Marketplace?.id ?? null, environment: os.ebay_environment || 'production', hasCreds: !!(clientId && clientSecret), connected: !!os.marketplace_token } }) data = { status: 200, records } 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: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })