ThermalPrintingController.php 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\Transaction;
  5. use Exception;
  6. use Hoa\Socket\Client as SocketClient;
  7. use Hoa\Websocket\Client as WebsocketClient;
  8. class ThermalPrintingController extends Controller
  9. {
  10. public function __invoke(Transaction $transaction)
  11. {
  12. $transaction->load(['outlet', 'customer', 'transactionDetails.laundry']);
  13. $discount = $transaction->discount;
  14. $subTotalAsString = $transaction->subTotalAsString();
  15. $totalPriceAsString = $transaction->totalPriceAsString();
  16. foreach ($transaction->transactionDetails as $transactionDetail) {
  17. $totalPriceAsStringDetail = $transactionDetail->totalPriceAsString();
  18. $transactionDetail->totalPriceAsString = $totalPriceAsStringDetail;
  19. }
  20. $transaction->discount = $discount;
  21. $transaction->subTotalAsString = $subTotalAsString;
  22. $transaction->totalPriceAsString = $totalPriceAsString;
  23. try {
  24. $socket = new WebsocketClient(
  25. new SocketClient('ws://127.0.0.1:5544')
  26. );
  27. $socket->setHost('escpos-server');
  28. $socket->connect();
  29. $socket->send(json_encode($transaction));
  30. $socket->close();
  31. } catch (Exception $e) {
  32. return back()->with('error', __('messages.error.store.transaction'));
  33. }
  34. return back();
  35. }
  36. }