success($this->service->wallets($request->user(), $this->tenantId($request)), 'Daftar dompet berhasil diambil'); } public function ledger(Request $request, Wallet $wallet) { return $this->success($this->service->ledger($wallet, $request->user(), $this->tenantId($request), $request->validate(['per_page' => ['nullable', 'integer', 'min:1', 'max:100']])), 'Mutasi dompet berhasil diambil'); } public function transfer(TransferWalletRequest $request, Wallet $wallet) { return $this->created($this->service->transfer($wallet, Wallet::findOrFail($request->integer('destination_wallet_id')), $request->float('amount'), $request->user(), $this->tenantId($request)), 'Saldo berhasil dipindahkan'); } public function withdraw(StoreWithdrawalRequest $request, Wallet $wallet) { return $this->created($this->service->requestWithdrawal($wallet, $request->validated(), $request->user(), $this->tenantId($request)), 'Permintaan penarikan berhasil dibuat'); } private function tenantId(Request $request): ?int { return $request->attributes->get('tenant_id'); } }