query('q', '')); $qrIds = ladill_account()->qrCodes() ->where('type', QrCode::TYPE_PAYMENT) ->pluck('id'); $payments = MiniPayment::query() ->whereIn('qr_code_id', $qrIds) ->when($search !== '', function ($query) use ($search) { $like = '%'.$search.'%'; $query->where(function ($inner) use ($like) { $inner->where('payer_name', 'like', $like) ->orWhere('payer_email', 'like', $like) ->orWhere('payer_note', 'like', $like) ->orWhere('reference', 'like', $like) ->orWhere('payment_reference', 'like', $like) ->orWhereHas('qrCode', fn ($qr) => $qr->where('label', 'like', $like)); }); }) ->with('qrCode') ->latest('created_at') ->paginate(25) ->withQueryString(); return response()->json([ 'data' => collect($payments->items())->map(fn (MiniPayment $p) => PaymentPresenter::present($p))->values(), 'meta' => [ 'current_page' => $payments->currentPage(), 'last_page' => $payments->lastPage(), 'per_page' => $payments->perPage(), 'total' => $payments->total(), ], ]); } }