import { string } from 'alga-js' import refreshTokenHelper from "../../../utils/refreshTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const query = getQuery(event) const limit: number = query?.limit ?? 100 const offset: number = query?.offset ?? 0 const filter: string = query?.filter ?? '' const openOnly: string = query?.openOnly ?? '' const openShipments: string = query?.openShipments ?? '' const nameFilter: string = query?.name ?? '' const trackingNoFilter: string = query?.trackingNo ?? '' let filterString = string.urlEncode('IsSOTrx eq true') if (filter) { filterString += string.urlEncode(' AND ') + string.urlEncode(filter) } if (nameFilter) { filterString += string.urlEncode(' AND ') + string.urlEncode(`contains(ship_name,'${nameFilter}')`) } if (trackingNoFilter) { filterString += string.urlEncode(' AND ') + string.urlEncode(`contains(TrackingNo,'${trackingNoFilter}')`) } if (openOnly === 'true') { filterString += string.urlEncode(' AND ') + string.urlEncode(`has_shipment eq 'N' AND (DocStatus eq 'CO' or DocStatus eq 'DR' or DocStatus eq 'IP')`) } if (openShipments === 'true') { filterString += string.urlEncode(' AND ') + string.urlEncode(`has_shipment eq 'Y' AND IsCommissioned eq false AND (DocStatus eq 'CO' or DocStatus eq 'DR' or DocStatus eq 'IP')`) } const res: any = await event.context.fetch( `models/v_orders_summary?$filter=${filterString}&$orderby=${string.urlEncode('Created desc')}&$top=${limit}&$skip=${offset}`, 'GET', token, null ) return res || {} } 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 })