From 4a697af4c77db3c4264c94294ccbf1c0caaf50dd Mon Sep 17 00:00:00 2001 From: adonis Date: Tue, 30 Jun 2026 10:24:42 +0330 Subject: [PATCH] fix title in transacrion --- app/Http/Controllers/Controller.php | 40 +++++++++++++++++++ .../Controllers/Customer/WalletController.php | 35 ++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index aaf081b..0b17a00 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -324,6 +324,46 @@ class Controller extends BaseController return in_array($title, self::genericMetalTransactionTitles(), true); } + public static function rialDepositTitle(): string + { + return 'واریز ریالی'; + } + + public static function rialWithdrawTitle(): string + { + return 'برداشت ریالی'; + } + + /** + * type و title تراکنش ریالی — بر اساس علامت cash (داده‌های قدیمی گاهی type=4 با cash مثبت دارند). + */ + public static function normalizeRialTransactionPresentation($record, bool $persist = true): void + { + $type = (int) ($record->type ?? 0); + if (!in_array($type, [3, 4], true)) { + return; + } + + $cash = (float) ($record->cash ?? 0); + $correctType = $cash >= 0 ? 3 : 4; + $correctTitle = $correctType === 3 ? self::rialDepositTitle() : self::rialWithdrawTitle(); + + $dirty = false; + if ($correctType !== $type) { + $record->type = $correctType; + $dirty = true; + } + + if (trim((string) ($record->title ?? '')) !== $correctTitle) { + $record->title = $correctTitle; + $dirty = true; + } + + if ($dirty && $persist && $record instanceof \Rooyesh\Wallet\models\Transaction) { + $record->save(); + } + } + public static function productBuyTitle(string $productTitle): string { return 'خرید ' . $productTitle; diff --git a/app/Http/Controllers/Customer/WalletController.php b/app/Http/Controllers/Customer/WalletController.php index 27ef281..0e1fcad 100644 --- a/app/Http/Controllers/Customer/WalletController.php +++ b/app/Http/Controllers/Customer/WalletController.php @@ -81,6 +81,9 @@ class WalletController extends Controller public function transactionTable(Request $request) { + $customerId = (int) auth('customer')->id(); + $this->repairMisclassifiedRialTransactions($customerId); + if (isset($request->wallet_id)){ $wallet = Wallet::with('product')->where('id', $request->wallet_id)->where('owner', auth('customer')->id())->get(); }else{ @@ -116,6 +119,7 @@ class WalletController extends Controller $this->applyProductTransactionTitle($record); $this->applyProductOrderDisplayFields($record); $this->applyProductTransactionUnit($record); + self::normalizeRialTransactionPresentation($record); continue; } @@ -153,6 +157,7 @@ class WalletController extends Controller $this->applyProductTransactionTitle($record); $this->applyProductOrderDisplayFields($record); $this->applyProductTransactionUnit($record); + self::normalizeRialTransactionPresentation($record); } $records['rows'] = $this->serializeTransactionRowsForApi($records['rows']); @@ -160,6 +165,36 @@ class WalletController extends Controller return response()->json($records); } + /** + * دادهٔ قدیمی: type=4 با cash مثبت (واریز ادمین) — قبل از فیلتر جدول اصلاح می‌شود. + */ + private function repairMisclassifiedRialTransactions(int $customerId): void + { + if ($customerId <= 0) { + return; + } + + Transaction::query() + ->where('customer_id', $customerId) + ->whereNull('fund_id') + ->where('type', 4) + ->where('cash', '>', 0) + ->update([ + 'type' => 3, + 'title' => self::rialDepositTitle(), + ]); + + Transaction::query() + ->where('customer_id', $customerId) + ->whereNull('fund_id') + ->where('type', 3) + ->where('cash', '<', 0) + ->update([ + 'type' => 4, + 'title' => self::rialWithdrawTitle(), + ]); + } + public function transactionTableb(Request $request) { $wallet = Wallet::with('product')->where('owner', auth('customer')->id())->whereNull('fund_id')->get();