41 lines
1.6 KiB
PHP
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');
|
|
}
|
|
}
|