import refreshTokenHelper from "../../utils/refreshTokenHelper"
import errorHandlingHelper from "../../utils/errorHandlingHelper"

const handleFunc = async (event: any, authToken: string | null = null) => {
  const token = authToken ?? await getTokenHelper(event)
  const body = await readBody(event)

  if (!body.id) {
    return { status: 400, message: 'Fee line ID is required' }
  }

  if (body.lineTotalAmt === undefined || body.lineTotalAmt === null) {
    return { status: 400, message: 'LineTotalAmt is required' }
  }

  const res: any = await event.context.fetch(
    `models/cust_fulfillmentfeeline/${body.id}`,
    'PUT', token,
    {
      LineTotalAmt: parseFloat(body.lineTotalAmt) || 0,
      tableName: 'Cust_FulfillmentFeeLine'
    }
  )

  let data: any = {}
  if (res) {
    data = res
    data['status'] = 200
    data['message'] = 'Fee line updated successfully'
  }

  return data
}

export default defineEventHandler(async (event) => {
  let data: any = {}

  try {
    data = await handleFunc(event)
  } catch(err: any) {
    try {
      let authToken = await refreshTokenHelper(event)
      data = await handleFunc(event, authToken)
    } catch(error: any) {
      data = errorHandlingHelper(err?.data ?? err, error?.data ?? error)
    }
  }

  return data
})