import 'dart:developer'; import 'package:enaklo_pos/core/extensions/string_ext.dart'; import 'package:enaklo_pos/core/utils/printer_service.dart'; import 'package:enaklo_pos/data/dataoutputs/print_dataoutputs.dart'; import 'package:enaklo_pos/data/datasources/product_local_datasource.dart'; import 'package:enaklo_pos/data/models/response/order_response_model.dart'; import 'package:enaklo_pos/presentation/home/models/product_quantity.dart'; import 'package:flutter/material.dart'; Future onPrint( BuildContext context, { required List productQuantity, required Order order, }) async { final checkerPrinter = await ProductLocalDatasource.instance.getPrinterByCode('checker'); final kitchenPrinter = await ProductLocalDatasource.instance.getPrinterByCode('kitchen'); final barPrinter = await ProductLocalDatasource.instance.getPrinterByCode('bar'); log("Checker printer: ${checkerPrinter?.toMap()}"); log("Kitchen printer: ${kitchenPrinter?.toMap()}"); log("Bar printer: ${barPrinter?.toMap()}"); // Checker printer if (checkerPrinter != null) { try { final printValue = await PrintDataoutputs.instance.printChecker( productQuantity, order.tableNumber ?? "", order.orderNumber ?? "", 'kasir', checkerPrinter.paper.toIntegerFromText, order.orderType ?? "", ); await PrinterService() // ignore: use_build_context_synchronously .printWithPrinter(checkerPrinter, printValue, context); } catch (e) { log("Error printing checker: $e"); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('Error printing checker: $e')), ); } } // Kitchen printer if (kitchenPrinter != null) { try { final printValue = await PrintDataoutputs.instance.printKitchen( productQuantity, order.tableNumber!, order.orderNumber ?? "", 'kasir', kitchenPrinter.paper.toIntegerFromText, order.orderType ?? "", ); await PrinterService() .printWithPrinter(kitchenPrinter, printValue, context); } catch (e) { log("Error printing kitchen order: $e"); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('Error printing kitchen order: $e')), ); } } // Bar printer if (barPrinter != null) { try { final printValue = await PrintDataoutputs.instance.printBar( productQuantity, order.tableNumber ?? "", order.orderNumber ?? "", 'kasir', barPrinter.paper.toIntegerFromText, order.orderType ?? "", ); await PrinterService().printWithPrinter(barPrinter, printValue, context); } catch (e) { log("Error printing bar order: $e"); ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text('Error printing bar order: $e')), ); } } }