id) ->where('status', 'unpaid') ->whereNotNull('published_at') ->first(); $invoiceHistory = Invoice::where('user_id', $user->id) ->where('status', 'paid') ->whereNotNull('published_at') ->orderBy('created_at', 'desc') ->paginate(10); return view('invoices.index', [ 'currentInvoice' => $currentInvoice, 'invoiceHistory' => $invoiceHistory ]); } /** * Menampilkan detail satu tagihan & tombol bayar. */ // app/Http/Controllers/InvoiceController.php public function show(Invoice $invoice, Request $request) { if ($invoice->user_id !== Auth::id()) { abort(403, 'AKSES DITOLAK'); } // ✅ Ambil meter_value dari MeterReading $meterReading = \App\Models\MeterReading::find($invoice->meter_reading_id); $meterValue = $meterReading ? $meterReading->meter_value : 0; if ($invoice->status == 'paid') { return view('invoices.show', [ 'invoice' => $invoice, 'snapToken' => null, 'meterValue' => $meterValue, // ✅ Kirim ke view ]); } if ($invoice->status == 'unpaid') { $orderId = 'PAMSIMAS-' . $invoice->id . '-' . time(); $params = [ 'transaction_details' => [ 'order_id' => $orderId, 'gross_amount' => $invoice->total_amount, ], 'customer_details' => [ 'first_name' => $invoice->user->name, 'email' => $invoice->user->email, 'phone' => $invoice->user->profile->phone_number, ], ]; $snapToken = Snap::getSnapToken($params); $invoice->midtrans_order_id = $orderId; $invoice->snap_token = $snapToken; $invoice->save(); } return view('invoices.show', [ 'invoice' => $invoice, 'snapToken' => $invoice->snap_token, 'meterValue' => $meterValue ?? 0, ]); } }