forked from TFMM/silent-auction
87 lines
2.6 KiB
PHP
87 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Services;
|
|
|
|
use Dompdf\Dompdf;
|
|
use Dompdf\Options;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class PrinterService
|
|
{
|
|
/**
|
|
* Print the pickup slip for a given Checkout model.
|
|
*
|
|
* @param \App\Models\Checkout $checkout
|
|
* @return void
|
|
*/
|
|
public function printForCheckout(\App\Models\Checkout $checkout)
|
|
{
|
|
$bidder_num = $checkout->bidder_num;
|
|
|
|
$checkout_list_results = \Illuminate\Support\Facades\DB::select("SELECT
|
|
*, items.item_assigned_num, items.item_desc
|
|
FROM winning_bids
|
|
INNER JOIN items AS items
|
|
ON winning_bids.winning_item_num=items.iditems
|
|
WHERE winning_bidder_num = $bidder_num
|
|
");
|
|
|
|
$checkout_info_results = \Illuminate\Support\Facades\DB::select("SELECT
|
|
winning_bids.*,
|
|
bidders.*,
|
|
sum(winning_cost) AS total_cost
|
|
FROM winning_bids
|
|
INNER JOIN bidders AS bidders
|
|
ON winning_bids.winning_bidder_num=bidders.idbidders
|
|
WHERE winning_bidder_num = $bidder_num
|
|
GROUP BY winning_bids.winning_bidder_num
|
|
");
|
|
|
|
$this->printPickupSlip([
|
|
'checkout_final_results' => $checkout,
|
|
'checkout_list_results' => $checkout_list_results,
|
|
'checkout_info_results' => $checkout_info_results
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Print the pickup slip by sending it to the HP ePrint email address.
|
|
*
|
|
* @param array $checkoutData
|
|
* @return void
|
|
*/
|
|
public function printPickupSlip($checkoutData)
|
|
{
|
|
if (!config('services.printer.enabled')) {
|
|
Log::info('Auto-print is disabled.');
|
|
return;
|
|
}
|
|
|
|
$printerEmail = config('services.printer.email');
|
|
if (empty($printerEmail)) {
|
|
Log::error('Printer email is not configured.');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
$options = new Options();
|
|
$options->set('isHtml5ParserEnabled', true);
|
|
$options->set('isRemoteEnabled', true);
|
|
$dompdf = new Dompdf($options);
|
|
|
|
$html = view('receiptpdf', $checkoutData)->render();
|
|
$dompdf->loadHtml($html);
|
|
$dompdf->setPaper('letter', 'portrait');
|
|
$dompdf->render();
|
|
$pdfOutput = $dompdf->output();
|
|
|
|
Mail::to($printerEmail)->send(new \App\Mail\PickupSlipMail($pdfOutput));
|
|
|
|
Log::info('Pickup slip sent to printer: ' . $printerEmail);
|
|
} catch (\Exception $e) {
|
|
Log::error('Failed to print pickup slip: ' . $e->getMessage());
|
|
}
|
|
}
|
|
}
|