From 329fd18d5e93738cb350b00c99e6ed1c6b397db4 Mon Sep 17 00:00:00 2001 From: gholak tala Date: Thu, 5 Feb 2026 06:14:14 +0000 Subject: [PATCH 01/10] before --- app/Http/Controllers/Site/ReportController.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Site/ReportController.php b/app/Http/Controllers/Site/ReportController.php index 3be6cb5..cee047f 100755 --- a/app/Http/Controllers/Site/ReportController.php +++ b/app/Http/Controllers/Site/ReportController.php @@ -128,7 +128,8 @@ class ReportController extends Controller $main_product_id = Cnt::where('key', 'main_product')->first()['value']; $pr_product = Product::find($main_product_id); - + $ref = Http::timeout(40)->get('https://garoosigholaktala.ir/server/refPricer', [])->json(); + $priceValue = $pr_product['price'] + $pr_product['price_profit'];//$tala_ir;//4000 $lastPrice = Price::latest()->first(); if (!$lastPrice || $lastPrice->price != $priceValue and $priceValue > 30000000) { @@ -167,7 +168,8 @@ class ReportController extends Controller // 'henzagold' => $henzagold_18, // 'Ounce' => $henzagold_ons_gold, // 'milli' => $milli, - 'main_product' => $pr_product['price'] + $pr_product['price_profit'] + 'main_product' => $pr_product['price'] + $pr_product['price_profit'], + 'refpricer' => $ref ]; } else { return []; From 1ffd86b0ef004f446145a39157c0670d29d31817 Mon Sep 17 00:00:00 2001 From: gholak tala Date: Thu, 5 Feb 2026 06:54:07 +0000 Subject: [PATCH 02/10] NASER get price from taban gohar --- app/Http/Controllers/Site/ReportController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Site/ReportController.php b/app/Http/Controllers/Site/ReportController.php index cee047f..42e192a 100755 --- a/app/Http/Controllers/Site/ReportController.php +++ b/app/Http/Controllers/Site/ReportController.php @@ -130,7 +130,12 @@ class ReportController extends Controller $pr_product = Product::find($main_product_id); $ref = Http::timeout(40)->get('https://garoosigholaktala.ir/server/refPricer', [])->json(); - $priceValue = $pr_product['price'] + $pr_product['price_profit'];//$tala_ir;//4000 + try { + $taban_gohar = Http::timeout(2)->get('https://tabangohar.com/GheymatKhan/prices_in_table.html')->json(); + $tgn = (int)$taban_gohar['c']; + }catch (\Exception $e){$tgn = 0;} + + $priceValue = $tgn ==0 ? $pr_product['price'] + $pr_product['price_profit'] : $tgn;//$tala_ir;//4000 $lastPrice = Price::latest()->first(); if (!$lastPrice || $lastPrice->price != $priceValue and $priceValue > 30000000) { $price = new Price(); @@ -169,6 +174,7 @@ class ReportController extends Controller // 'Ounce' => $henzagold_ons_gold, // 'milli' => $milli, 'main_product' => $pr_product['price'] + $pr_product['price_profit'], + 'taban_gohar' => $tgn, 'refpricer' => $ref ]; } else { From fd3c9b0320825fbc5e64f5436bbf23cb4dafd065 Mon Sep 17 00:00:00 2001 From: gholak tala Date: Thu, 5 Feb 2026 07:55:13 +0000 Subject: [PATCH 03/10] before --- app/Http/Controllers/Site/ReportController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Site/ReportController.php b/app/Http/Controllers/Site/ReportController.php index 42e192a..e711b1f 100755 --- a/app/Http/Controllers/Site/ReportController.php +++ b/app/Http/Controllers/Site/ReportController.php @@ -132,10 +132,10 @@ class ReportController extends Controller try { $taban_gohar = Http::timeout(2)->get('https://tabangohar.com/GheymatKhan/prices_in_table.html')->json(); - $tgn = (int)$taban_gohar['c']; + $tgn = (int)$taban_gohar['c']*10; }catch (\Exception $e){$tgn = 0;} - $priceValue = $tgn ==0 ? $pr_product['price'] + $pr_product['price_profit'] : $tgn;//$tala_ir;//4000 + $priceValue = $tgn !== 0 ? $tgn : $pr_product['price'] + $pr_product['price_profit'];//$tala_ir;//4000 $lastPrice = Price::latest()->first(); if (!$lastPrice || $lastPrice->price != $priceValue and $priceValue > 30000000) { $price = new Price(); From 26d87a793fdd15790401bc146d32a173c02a52ff Mon Sep 17 00:00:00 2001 From: gholak tala Date: Thu, 5 Feb 2026 08:33:50 +0000 Subject: [PATCH 04/10] NASER convert fa numbers to en --- app/Http/Middleware/ValidationMiddleware.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/Http/Middleware/ValidationMiddleware.php b/app/Http/Middleware/ValidationMiddleware.php index 53c20ae..24a68f4 100755 --- a/app/Http/Middleware/ValidationMiddleware.php +++ b/app/Http/Middleware/ValidationMiddleware.php @@ -19,6 +19,11 @@ class ValidationMiddleware public function handle(Request $request, Closure $next) { if($request->acceptsJson()){ + //convert fa digits to en digits + $allData = array_merge($request->all(), $request->query()); + $converted = $this->fa2en_numbers($allData); + $request->merge($converted); + $method = $request->getMethod(); $path =$request->path(); if(preg_match('/[0-9]+$/',$request->path(),$match)) { @@ -46,4 +51,16 @@ class ValidationMiddleware } throw new BadRequestHttpException(); } + private function fa2en_numbers($input) { + if (is_string($input)) { + $fa_numbers = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']; + $en_numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + return str_replace($fa_numbers, $en_numbers, $input); + } elseif (is_array($input)) { + return array_map([$this, __FUNCTION__], $input); + } else { + return $input; + } + } + } From cfb5b17ab780cb8a9f2c422253f3fa2142c9b61a Mon Sep 17 00:00:00 2001 From: gholak tala Date: Sun, 8 Feb 2026 08:02:11 +0000 Subject: [PATCH 05/10] NASER disable tahesab functions --- .../Controllers/Admin/TahesabController.php | 98 ++++++++++++------- app/Http/Controllers/Auth/AuthController.php | 7 ++ .../Customer/CustomerController.php | 4 + .../Single/SingleOrderController.php | 12 +-- 4 files changed, 80 insertions(+), 41 deletions(-) diff --git a/app/Http/Controllers/Admin/TahesabController.php b/app/Http/Controllers/Admin/TahesabController.php index 012c0c4..b7bcc33 100755 --- a/app/Http/Controllers/Admin/TahesabController.php +++ b/app/Http/Controllers/Admin/TahesabController.php @@ -8,52 +8,80 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use App\Models\Tahesab; use App\Models\Customer; +use Morilog\Jalali\Jalalian; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; use Hekmatinasser\Verta\Verta; class TahesabController extends Controller { - public function store() + public function create_user($customer_id) { - $customer = auth()->user(); - if (!$customer) { - throw new UnprocessableEntityHttpException("Auth needed"); - } - $customer = Customer::where('id', $customer->id)->first(); - if ($customer && ($customer->moshtari_code !== null)) { - return "customer exists"; - } - try { - $response = Http::withoutVerifying()->timeout(10)->withHeaders([ - 'DBName' => $this->Config('tahesab_db'), - 'Content-Type' => 'application/json', - 'Authorization' => "Bearer " . $this->Config('tahesab_token'), - ])->post('https://185.252.86.194:8081', [ - "DoNewMoshtari" => [ - $customer->name, - $this->Config('name_fa'), - $customer->mobile, - "", - $customer->n_code ?? "", - $customer->birth_date ?? "", // !== null ? jalalian::fromCarbon(Carbon::parse($customer->birth_date))->format('Y/m/d') : null, - "", - "", - -1, - 0 // tala - ] - ]); - } catch (\Exception $e) { - return $e->getMessage(); + $customer = Customer::findOrFail($customer_id); + + if ($customer && ($customer->moshtari_code == null)) { + try { + $response = Http::withoutVerifying()->timeout(10)->withHeaders([ + 'DBName' => $this->Config('tahesab_db'), + 'Content-Type' => 'application/json', + 'Authorization' => "Bearer " . $this->Config('tahesab_token'), + ])->post((string)env('TAHESAB'), [ + "DoNewMoshtari" => [ + (string)$customer->name, + $this->Config('name_fa'), + (string)$customer->mobile, + "", + "", + "", + "", + "", + -1, + 0 + ] +//{"DoNewMoshtari":["Name", "GroupName", "Tel", "Address", "CodeMeli", "Tarikh_Tavalod", "Moaref", "Code_Moaref", Moshtari_Code, Jens_Felez]} + ]); + if (!empty($response['OK'])) { + $customer->moshtari_code = $response['OK']; + $customer->save(); + } + } catch (\Exception $e) { + return $e->getMessage(); + } + }else { + if($customer && $customer->birth_date !== null){ + $birth_date = Verta::instance(Carbon::parse($customer->birth_date))->format('Y-m-d'); + } + try { + $response = Http::withoutVerifying()->timeout(10)->withHeaders([ + 'DBName' => $this->Config('tahesab_db'), + 'Content-Type' => 'application/json', + 'Authorization' => "Bearer " . $this->Config('tahesab_token'), + ])->post((string)env('TAHESAB'), [ + "DoEditMoshtari" => [ + $customer->name, + $this->Config('name_fa'), + $customer->mobile, + "", + $customer->n_code ?? "", + $birth_date ?? "", + "", + "", + (int)$customer->moshtari_code, + 0 // tala + ] +//{"DoEditMoshtari":["Name","GroupName", "Tel", "Address", "CodeMeli", "Tarikh_Tavalod", "Moaref", "Code_Moaref", Moshtari_Code]} + ]); + } catch (\Exception $e) { + return response($e->getMessage(), 500); + } + } if (empty($response['OK'])) { return "tahesab api error!!!"; } - $customer->moshtari_code = $response['OK']; - $customer->save(); return true; @@ -87,7 +115,7 @@ class TahesabController extends Controller } $date = Verta::instance(Carbon::parse($data['pay_at']))->format('Y-m-d'); [$year, $month, $day] = explode('-', $date); - + $amount = $data['amount']; $tahesab = Tahesab::create([ @@ -104,7 +132,7 @@ class TahesabController extends Controller 'DBName' => $this->Config('tahesab_db'), 'Content-Type' => 'application/json', 'Authorization' => "Bearer " . $this->Config('tahesab_token'), - ])->post('https://185.252.86.194:8081', [ + ])->post((string)env('TAHESAB'), [ "DoNewSanadBuySaleGOLD" => [ 1,//Sabte_Kol_Or_Movaghat_1_0 (int)$customer->moshtari_code, //Moshtari_Code @@ -187,7 +215,7 @@ class TahesabController extends Controller 'DBName' => $this->Config('tahesab_db'), 'Content-Type' => 'application/json', 'Authorization' => "Bearer " . $this->Config('tahesab_token'), - ])->post('https://185.252.86.194:8081', [ + ])->post((string)env('TAHESAB'), [ "DoNewSanadVKHBank" => [ 1,//Sabte_Kol_Or_Movaghat_1_0 $customer->moshtari_code,//Moshtari_Code diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php index ad5a482..5cf72b7 100755 --- a/app/Http/Controllers/Auth/AuthController.php +++ b/app/Http/Controllers/Auth/AuthController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Auth; +use App\Http\Controllers\Admin\TahesabController; use App\Http\Controllers\Controller; use App\Models\Cnt; use App\Models\Customer; @@ -160,6 +161,12 @@ class AuthController extends Controller $data['active'] = true; // Create customer $customer = Customer::create($data); + +// $tah = new TahesabController(); +// return $tah->store([ +// 'customer_id' => $customer->id, +// ]); + $message = "{$data['name']} عزیز، اکانت شما در پلتفرم {$this->Config('name_fa')} ایجاد شد.\nنام کاربری: {$data['mobile']}\n\nورود به نرم افزار:\n{$this->Config('app_url')}"; $this->Send($data['mobile'], $message); diff --git a/app/Http/Controllers/Customer/CustomerController.php b/app/Http/Controllers/Customer/CustomerController.php index 6b50af1..b18f512 100755 --- a/app/Http/Controllers/Customer/CustomerController.php +++ b/app/Http/Controllers/Customer/CustomerController.php @@ -18,6 +18,7 @@ use Rooyesh\Wallet\models\Transaction; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Http; use App\Models\Setting; +use App\Http\Controllers\Admin\TahesabController; //use App\Models\Price; @@ -102,6 +103,9 @@ class CustomerController extends Controller $updateData['credential_id'] = $request->credential_id; } $customer->update($updateData); + +// $tah = new TahesabController(); +// $tah->store(["customer_id" => $customer->id]); if (!$customer->is_legal) { $response = Http::withHeaders([ diff --git a/app/Http/Controllers/Single/SingleOrderController.php b/app/Http/Controllers/Single/SingleOrderController.php index 89a7825..f6a98f2 100755 --- a/app/Http/Controllers/Single/SingleOrderController.php +++ b/app/Http/Controllers/Single/SingleOrderController.php @@ -103,12 +103,12 @@ class SingleOrderController extends Controller $response['sell'] = $this->processSellTransaction($data, $wallet, $wallet_interface); } } -// try { -// $tahesab = new TahesabController(); -// $data['tahesab'] = $tahesab->storeTrade($data); -// }catch (\Exception $e){ -// return response($e->getMessage(), 500); -// } + try { + $tahesab = new TahesabController(); + $data['tahesab'] = $tahesab->storeTrade($data); + }catch (\Exception $e){ + return response($e->getMessage(), 500); + } // $response['reward'] = $this->give_order_reward($data, $wallet, $wallet_interface); $response['Notifications'] = $this->sendTransactionNotifications($data, $transactionType); From 875c1b09b2bf5458ed9f9d44ba6c2c73616930b0 Mon Sep 17 00:00:00 2001 From: Naser moghbel Date: Mon, 9 Feb 2026 14:09:19 +0330 Subject: [PATCH 06/10] NASER add setting controller & dynamic fee in settings & add send transactions to tahesab in settings --- .../Controllers/Admin/SettingsController.php | 41 +++++++++++++++++++ .../Controllers/Admin/WalletController.php | 14 +++++-- .../Single/SingleOrderController.php | 20 +++++---- .../Controllers/Site/ReportController.php | 10 +++-- app/Models/Setting.php | 12 ++++-- composer.json | 4 +- routes/admin.php | 7 ++++ 7 files changed, 88 insertions(+), 20 deletions(-) create mode 100644 app/Http/Controllers/Admin/SettingsController.php diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsController.php new file mode 100644 index 0000000..64ba5f3 --- /dev/null +++ b/app/Http/Controllers/Admin/SettingsController.php @@ -0,0 +1,41 @@ +select('id','title_fa', 'key','value','description','is_active')->get(); + return response()->json($Setting); + } + public function edit(Request $request) + { + // Check if the setting exists + $setting = Setting::where('key', $request->key)->first(); + + if ($setting) { + // Update the existing setting + $setting->value = $request->value; + $setting->description = $request->description; + $setting->is_active = $request->is_active; + $setting->save(); + } else { + // Create a new setting + $setting = new Setting(); + $setting->key = $request->key; + $setting->value = $request->value; + $setting->description = $request->description; + $setting->is_active = $request->is_active; + $setting->save(); + } + + // Return the setting as a JSON response + return response()->json($setting); + } + +} diff --git a/app/Http/Controllers/Admin/WalletController.php b/app/Http/Controllers/Admin/WalletController.php index c4022cf..3e68a23 100755 --- a/app/Http/Controllers/Admin/WalletController.php +++ b/app/Http/Controllers/Admin/WalletController.php @@ -18,6 +18,7 @@ use Rooyesh\Wallet\models\Transaction; use Rooyesh\Wallet\models\Wallet; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; use App\Http\Controllers\Admin\TahesabController; +use App\Models\Setting; class WalletController extends Controller @@ -117,9 +118,16 @@ class WalletController extends Controller 'active' => true ], 7, true, $deposit, $gold_block); - $data['direction'] = 0; -// $tahesab = new TahesabController(); -// $tahesab->wallet($data); + if(Setting::where('key', 'send_to_tahesab')->first()->value == "true"){ + try { + $data['direction'] = 0; + $tahesab = new TahesabController(); + $tahesab->wallet($data); + }catch (\Exception $e){ + return response($e->getMessage(), 500); + } + } + $status = $data['value'] > 0 ?" شارژ شد ": " کسر شد "; $message = 'کیف پول شما به اندازه ' . number_format(abs($data['value'])) . " ریال در تاریخ " . verta()->format('Y/n/j H:i:s') .$status . "بابت" . "\n" . $data['note'] diff --git a/app/Http/Controllers/Single/SingleOrderController.php b/app/Http/Controllers/Single/SingleOrderController.php index f6a98f2..0a13104 100755 --- a/app/Http/Controllers/Single/SingleOrderController.php +++ b/app/Http/Controllers/Single/SingleOrderController.php @@ -21,6 +21,7 @@ use Rooyesh\Wallet\models\Wallet; use App\Models\TransactionsAdmin; use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; use Illuminate\Support\Facades\Http; +use App\Models\Setting; class SingleOrderController extends Controller @@ -36,8 +37,10 @@ class SingleOrderController extends Controller $data['all_price'] = $latestPrice; $data['price'] = $latestPrice->price; $data['price_id'] = $latestPrice->id; - $data['difference'] = config('fee.cash'); - $data['service_charge_percentage'] = config('fee.service_charge_percentage'); +// $data['difference'] = config('fee.cash'); + $data['difference'] = Setting::where('key', 'fee_cash')->first()->value; +// $data['service_charge_percentage'] = config('fee.service_charge_percentage'); + $data['service_charge_percentage'] = Setting::where('key', 'fee_service_charge_percentage')->first()->value; $data['pay_at'] = (new \DateTime())->format('Y-m-d H:i:s'); } else if (auth('user')->id()) {//admin $data['service_charge_percentage'] = 0; @@ -103,13 +106,14 @@ class SingleOrderController extends Controller $response['sell'] = $this->processSellTransaction($data, $wallet, $wallet_interface); } } - try { - $tahesab = new TahesabController(); - $data['tahesab'] = $tahesab->storeTrade($data); - }catch (\Exception $e){ - return response($e->getMessage(), 500); + if(Setting::where('key', 'send_to_tahesab')->first()->value == "true"){ + try { + $tahesab = new TahesabController(); + $data['tahesab'] = $tahesab->storeTrade($data); + }catch (\Exception $e){ + return response($e->getMessage(), 500); + } } - // $response['reward'] = $this->give_order_reward($data, $wallet, $wallet_interface); $response['Notifications'] = $this->sendTransactionNotifications($data, $transactionType); return response()->json([$response, $data]); diff --git a/app/Http/Controllers/Site/ReportController.php b/app/Http/Controllers/Site/ReportController.php index e711b1f..34b58bf 100755 --- a/app/Http/Controllers/Site/ReportController.php +++ b/app/Http/Controllers/Site/ReportController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Admin\PriceController; use App\Http\Controllers\Controller; use App\Mail\YourMailableClass; use App\Models\Cnt; +use App\Models\Setting; use App\Models\ConfigStatic; use App\Models\Customer; use App\Models\Price; @@ -43,7 +44,8 @@ class ReportController extends Controller public function updatePrise() { - $difference = config('fee.single'); +// $difference = config('fee.single'); + $difference = Setting::where('key', 'fee_single')->first()->value; $lastPrice = Price::latest()->first(); $PriceTriggers = PriceTrigger::where("is_active", true)->get(); foreach ($PriceTriggers as $PriceTrigger) { @@ -71,7 +73,8 @@ class ReportController extends Controller public function upDownPrice() { - $difference = config('fee.single'); +// $difference = config('fee.single'); + $difference = Setting::where('key', 'fee_single')->first()->value; $today = Carbon::now()->format("Y-m-d"); $prises = Price::where('date_at', $today)->get("price"); @@ -119,7 +122,8 @@ class ReportController extends Controller public function lastPrice() { - $difference = config('fee.single'); +// $difference = config('fee.single'); + $difference = Setting::where('key', 'fee_single')->first()->value; // try { diff --git a/app/Models/Setting.php b/app/Models/Setting.php index 4ec3f53..05eaf7b 100755 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -4,18 +4,24 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Foundation\Auth\User as Authenticatable; +use Illuminate\Support\Facades\Hash; +use Rooyesh\Wallet\models\Transaction; +use Tymon\JWTAuth\Contracts\JWTSubject; class Setting extends Model { - use HasFactory; - protected $table = 'settings'; + use HasFactory,Selector; protected $fillable = [ 'key', 'title_fa', + 'is_active', + 'description', 'value', 'value_json' ]; protected $casts = [ - 'value_json'=>'array' + 'value_json'=>'array', + 'is_active'=>'boolean', ]; } diff --git a/composer.json b/composer.json index d4b8bce..41c8f8b 100755 --- a/composer.json +++ b/composer.json @@ -12,9 +12,7 @@ "laravel/framework": "^8.75", "laravel/sanctum": "^2.11", "laravel/tinker": "^2.5", - "tymon/jwt-auth": "^1.0", - "morilog/jalali": "^3.4" - }, + "tymon/jwt-auth": "^1.0"}, "require-dev": { "facade/ignition": "^2.5", "fakerphp/faker": "^1.9.1", diff --git a/routes/admin.php b/routes/admin.php index 84a2078..66d4190 100755 --- a/routes/admin.php +++ b/routes/admin.php @@ -15,12 +15,19 @@ use App\Http\Controllers\Customer\PriceTriggerController; use App\Http\Controllers\Finance\FinanceController; use App\Http\Controllers\Admin\ProductController; use App\Http\Controllers\Admin\TahesabController; +use App\Http\Controllers\Admin\SettingsController; + Route::middleware('auth:user')->group(function (){ Route::middleware('validation')->group(function (){ Route::get('/p', function () { return Http::get('https://pricing.liman.gold/pricingApi', [])->json(); }); + + //settigs + Route::get('get_settings',[SettingsController::class, 'index']); + Route::post('get_settings',[SettingsController::class, 'edit']); + //------------balence Route::post('getBalance', [DashboardController::class, 'getBalance']); //------------PriceTrigger From 06edd9e05de9dd850de15231370899530af7c8aa Mon Sep 17 00:00:00 2001 From: Naser moghbel Date: Tue, 10 Feb 2026 11:19:51 +0330 Subject: [PATCH 07/10] NASER fix price for buy and sell products & fee free for 5 first order --- .../Single/SingleOrderController.php | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Single/SingleOrderController.php b/app/Http/Controllers/Single/SingleOrderController.php index 0a13104..92e7d11 100755 --- a/app/Http/Controllers/Single/SingleOrderController.php +++ b/app/Http/Controllers/Single/SingleOrderController.php @@ -41,6 +41,15 @@ class SingleOrderController extends Controller $data['difference'] = Setting::where('key', 'fee_cash')->first()->value; // $data['service_charge_percentage'] = config('fee.service_charge_percentage'); $data['service_charge_percentage'] = Setting::where('key', 'fee_service_charge_percentage')->first()->value; + + $fee_free = Setting::where('key', 'fee_free')->where('is_active', true)->value('value'); + + if($fee_free && $this->feeFree($data['customer_id'], $fee_free)){ + $data['service_charge_percentage'] = 0; + $data['difference'] = 0; + $data['fee_free'] = true; + } + $data['pay_at'] = (new \DateTime())->format('Y-m-d H:i:s'); } else if (auth('user')->id()) {//admin $data['service_charge_percentage'] = 0; @@ -65,6 +74,13 @@ class SingleOrderController extends Controller $data['difference'] = $data['fee'] = $data['product']['cash_fee_buy']; $data['total_price_original'] = $data['product']['amount'] * ($data['price_original'] ?? 0); + $fee_free = Setting::where('key', 'fee_free')->where('is_active', true)->value('value'); + + if($fee_free && $this->feeFree($data['customer_id'], $fee_free)){ + $data['service_charge_percentage'] = 0; + $data['difference'] = 0; + } + // Check if the method is cash if ($data['method'] == "cash") { $response['buy'] = $this->processBuyTransactionProduct($data, $wallet, $wallet_interface); @@ -79,6 +95,12 @@ class SingleOrderController extends Controller $data['difference'] = $data['fee'] = $data['product']['cash_fee_sell']; $data['total_price_original'] = $data['product']['amount'] * ($data['price_original'] ?? 0); + $fee_free = Setting::where('key', 'fee_free')->where('is_active', true)->value('value'); + + if($fee_free && $this->feeFree($data['customer_id'], $fee_free)){ + $data['service_charge_percentage'] = 0; + $data['difference'] = 0; + } // Check if the method is cash if ($data['method'] == "cash") { $response['sell'] = $this->processSellTransactionProduct($data, $wallet, $wallet_interface); @@ -90,7 +112,7 @@ class SingleOrderController extends Controller } else { // Calculate total price and fee for non-product (gold) transaction $data['total_price_original'] = $data['amount'] * ($data['price_original'] ?? 0); - $data['total_fee'] = $data['amount'] * $data['difference']; + $data['total_fee'] = $data['amount'] * ($data['difference'] == 0 ? 1 : $data['difference']); $data['product'] = Product::find(13); // Check if the user wants to buy if ($data['direction'] == 1) { @@ -163,7 +185,7 @@ class SingleOrderController extends Controller private function processBuyTransactionProduct(&$data, $wallet, $wallet_interface) { - + $data['price'] = $data['product']["price"]; $data['price'] += $data['difference']; $data['amount'] = $data['number'] * $data['product']['amount']; $data['total_amount'] = $data['amount']+($data['product']['percent_fee_buy']*$data['amount']); @@ -270,6 +292,7 @@ class SingleOrderController extends Controller private function processSellTransactionProduct(&$data, $wallet, $wallet_interface) { + $data['price'] = $data['product']["price"]; $data['price'] -= $data['difference']; $data['amount'] = $data['number'] * $data['product']['amount']; $data['total_amount'] = $data['amount']-($data['product']['percent_fee_sell']*$data['amount']) ; @@ -542,4 +565,13 @@ class SingleOrderController extends Controller ])->export($records); return response()->json($records); } + + private function feeFree($customer_id, $count) + { + return Order::where('customer_id', $customer_id) + ->where('type', 2) + ->where('sts', 2) + ->where('payment_sts', 4) + ->count() < (int)$count; + } } From 129395accd7204f83a619bd5ee9666d95bd8cba7 Mon Sep 17 00:00:00 2001 From: Naser moghbel Date: Tue, 10 Feb 2026 12:29:57 +0330 Subject: [PATCH 08/10] NASER fix revert --- app/Http/Controllers/Controller.php | 2 +- app/Http/Controllers/Site/ReportController.php | 9 +++++++-- config/message.php | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index f094531..0bf7b7a 100755 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -72,7 +72,7 @@ class Controller extends BaseController "sms" => [ 'user_name' => 'ysms1362', - 'password' => '1234@Abcgh', + 'password' => 'tL4w0PfNy2()', 'sender' => '3000164545', ], ]; diff --git a/app/Http/Controllers/Site/ReportController.php b/app/Http/Controllers/Site/ReportController.php index 34b58bf..921f355 100755 --- a/app/Http/Controllers/Site/ReportController.php +++ b/app/Http/Controllers/Site/ReportController.php @@ -19,6 +19,7 @@ use Illuminate\Support\Arr; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Mail; use Morilog\Jalali\Jalalian; +use App\Http\Controllers\Admin\ProductController; class ReportController extends Controller { @@ -131,8 +132,12 @@ class ReportController extends Controller // } catch (\Exception $e) {$tala_ir = 0;} $main_product_id = Cnt::where('key', 'main_product')->first()['value']; - $pr_product = Product::find($main_product_id); - $ref = Http::timeout(40)->get('https://garoosigholaktala.ir/server/refPricer', [])->json(); + $refpricer = new ProductController(); + if ($refpricer->getPrice()) { + $ref = true; + } else { + $ref = false; + } try { $taban_gohar = Http::timeout(2)->get('https://tabangohar.com/GheymatKhan/prices_in_table.html')->json(); diff --git a/config/message.php b/config/message.php index e1e1bc5..29a6c8e 100755 --- a/config/message.php +++ b/config/message.php @@ -3,7 +3,7 @@ return[ '0098'=>[ 'active'=>true, 'user_name'=>'ysms1362', - 'password'=>'1234@Abcgh', + 'password'=>'tL4w0PfNy2()', 'sender'=>'3000164545', ], From 6f7acf73b6b3af0823b18877c5f30e9b6d76efbe Mon Sep 17 00:00:00 2001 From: gholak tala Date: Tue, 10 Feb 2026 09:05:16 +0000 Subject: [PATCH 09/10] NASER fix minor issue --- app/Http/Controllers/Site/ReportController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/Site/ReportController.php b/app/Http/Controllers/Site/ReportController.php index 921f355..6fd46e1 100755 --- a/app/Http/Controllers/Site/ReportController.php +++ b/app/Http/Controllers/Site/ReportController.php @@ -138,6 +138,7 @@ class ReportController extends Controller } else { $ref = false; } + $pr_product = Product::find($main_product_id); try { $taban_gohar = Http::timeout(2)->get('https://tabangohar.com/GheymatKhan/prices_in_table.html')->json(); From a0a788ce53f1b3dff84bd16f3b7db585071bc159 Mon Sep 17 00:00:00 2001 From: Naser moghbel Date: Thu, 12 Feb 2026 10:57:01 +0330 Subject: [PATCH 10/10] NASER add settings to me api for admin --- app/Http/Controllers/Admin/UserController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 8ce4487..b945600 100755 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -7,6 +7,7 @@ use App\Http\Controllers\SuperController; use App\Models\Permission; use App\Models\User; use Illuminate\Http\Request; +use App\Models\Setting; class UserController extends SuperController { @@ -29,6 +30,9 @@ class UserController extends SuperController ->findOrFail(auth()->id()); // $permission = Permission::where('user_type',$user->user_type)->select('rid')->distinct('rid')->get()->pluck('rid')->toArray(); // $user['permission'] = $permission; + $query = Setting::query(); + $settings = $query->get(); + $user->settings= $settings; return response()->json($user); }