import { stagePrintFile, printFile, applyPrintResult } from '../../utils/printDispatch'

// Shipping label → the commissioning table's label printer.
// Body: { pathName, fileName, fileContent (base64), shippingPrinter?, printOptions? }
// Printing goes through printDispatch (local CUPS or the tenant's Print Agent, decided per printer).
export default defineEventHandler(async (event) => {
  let data: any = {}
  const body = await readBody(event)
  const shippingPrinter = body.shippingPrinter || 'labelprinter-1'
  const printOptions = body.printOptions || '' // Optional print options (e.g., '-o sides=one-sided')

  try {
    const filePath = await stagePrintFile(body.pathName, body.fileName, Buffer.from(body.fileContent, 'base64'))
    const result = await printFile(event, { queue: shippingPrinter, options: printOptions, filePath, source: 'print/labelprint' })
    data = applyPrintResult({ ...body }, result)
  } catch(err: any) {
    data = err
  }

  return data
})
