import refreshTokenHelper from "../../../utils/refreshTokenHelper"
import errorHandlingHelper from "../../../utils/errorHandlingHelper"
import { buildFullFilter, fetchSummaryTotals } from "../../../utils/orders/summaryQuery"

// Totals badge of /sales/orders (fees + revenue over the whole filtered set).
// Same body as the rows route (switch toggles, dropdowns, date ranges, AG Grid
// filterModel); cached 60 s per session triple + filter. Kept off the rows
// path so block 0 never waits for the whole-set pull.
const handleFunc = async (event: any, authToken: any = null) => {
  const token = authToken ?? await getTokenHelper(event)
  const body = await readBody(event)
  const fullFilter = buildFullFilter(body || {})
  return await fetchSummaryTotals(event, token, fullFilter)
}

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)
    }
  }
  return data
})
