Files
2026-07-31 13:57:11 +07:00

41 lines
1.6 KiB
PHP

<?php
namespace App\Http\Controllers\Wallet;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Wallet\StoreWithdrawalRequest;
use App\Http\Requests\Wallet\TransferWalletRequest;
use App\Models\Wallet;
use App\Services\Wallet\WalletService;
use Illuminate\Http\Request;
class WalletController extends ApiController
{
public function __construct(protected WalletService $service) {}
public function index(Request $request)
{
return $this->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');
}
}