From 875c1b09b2bf5458ed9f9d44ba6c2c73616930b0 Mon Sep 17 00:00:00 2001 From: Naser moghbel Date: Mon, 9 Feb 2026 14:09:19 +0330 Subject: [PATCH] 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