walletService = $walletService; $this->zibalPaymentService = $zibalPaymentService; $this->withdrawRequestService = $withdrawRequestService; } public function index() { $wallet = $this->walletService->forUser(Auth::user()); $transactions = $wallet->transactions() ->with('invoice') ->latest() ->paginate(10) ->withQueryString() ->onEachSide(1); $withdrawRequests = Auth::user()->withdrawRequests() ->with('bankCard') ->latest() ->take(10) ->get(); return Inertia::client('Dashboard/Wallet/Index', [ 'transactions' => WalletTransactionResource::collection($transactions), 'withdrawRequests' => WithdrawRequestResource::collection($withdrawRequests)->resolve(), 'bankCards' => BankCardResource::collection(Auth::user()->bankCards()->latest()->get())->resolve(), ]); } public function deposit(WalletDepositRequest $request) { $payment = $this->zibalPaymentService->request( Auth::user(), $request->validated('amount'), 'wallet-' . Auth::id() . '-' . now()->timestamp, ['purpose' => PaymentPurposeEnum::WalletTopUp->value] ); return response()->json([ 'payment' => new PaymentResource($payment), 'url' => $this->zibalPaymentService->paymentUrl($payment), ]); } public function storeWithdrawRequest(WithdrawRequestStoreRequest $request) { $bankCard = BankCard::findOrFail($request->validated('bank_card_id')); $this->withdrawRequestService->request(Auth::user(), $request->validated('amount'), $bankCard); session()->flash('success', 'درخواست برداشت شما ثبت شد و در انتظار بررسی است.'); return redirect()->route('dashboard.wallet.index'); } public function storeBankCard(BankCardStoreRequest $request) { Auth::user()->bankCards()->create($request->validated()); session()->flash('success', 'کارت بانکی با موفقیت ثبت شد.'); return redirect()->route('dashboard.wallet.index'); } public function destroyBankCard(BankCard $bankCard) { abort_unless($bankCard->user_id === Auth::id(), 403); $bankCard->delete(); return redirect()->route('dashboard.wallet.index'); } }