1234567891011121314151617181920212223242526272829303132333435363738394041
  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', 'transactionDetails.product']);
  13. $subTotalAsString = $transaction->subTotalAsString();
  14. $totalPriceAsString = $transaction->totalPriceAsString();
  15. foreach ($transaction->transactionDetails as $transactionDetail) {
  16. $totalPriceAsStringDetail = $transactionDetail->totalPriceAsString();
  17. $transactionDetail->totalPriceAsString = $totalPriceAsStringDetail;
  18. }
  19. $transaction->subTotalAsString = $subTotalAsString;
  20. $transaction->totalPriceAsString = $totalPriceAsString;
  21. try {
  22. $socket = new WebsocketClient(
  23. new SocketClient('ws://103.157.96.20:5544')
  24. );
  25. $socket->setHost('escpos-server');
  26. $socket->connect();
  27. $socket->send(json_encode($transaction));
  28. $socket->close();
  29. } catch (Exception $e) {
  30. return back()->with('error', __('messages.error.store.transaction'));
  31. }
  32. return back();
  33. }
  34. }