From e4e04e9419b67bc590ec633356ffd14d0286d7a7 Mon Sep 17 00:00:00 2001 From: Ghassan Yusuf Date: Tue, 19 May 2026 13:04:23 +0300 Subject: [PATCH] feat: add SettingsController and settings routes --- app/Http/Controllers/SettingsController.php | 55 +++++++++++++++++++++ routes/web.php | 8 +++ 2 files changed, 63 insertions(+) create mode 100644 app/Http/Controllers/SettingsController.php diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php new file mode 100644 index 0000000..56b3abb --- /dev/null +++ b/app/Http/Controllers/SettingsController.php @@ -0,0 +1,55 @@ + Setting::get('ultramsg_enabled', false), + 'instance_id' => Setting::get('ultramsg_instance_id', ''), + 'token' => Setting::get('ultramsg_token', ''), + 'webhook_secret' => Setting::get('ultramsg_webhook_secret', ''), + 'webhook_path' => Setting::get('ultramsg_webhook_path', 'ultra-message/webhook'), + ]; + + return view('settings.integrations', compact('settings')); + } + + public function updateWhatsapp(Request $request): RedirectResponse + { + $request->validate([ + 'instance_id' => ['required', 'string', 'max:100'], + 'token' => ['required', 'string', 'max:255'], + 'webhook_secret' => ['nullable', 'string', 'max:255'], + 'webhook_path' => ['required', 'string', 'max:100'], + ]); + + Setting::set('ultramsg_enabled', $request->boolean('enabled') ? '1' : '0'); + Setting::set('ultramsg_instance_id', $request->instance_id); + Setting::set('ultramsg_token', $request->token); + Setting::set('ultramsg_webhook_secret', $request->webhook_secret ?? ''); + Setting::set('ultramsg_webhook_path', $request->webhook_path); + + return redirect()->route('settings.integrations')->with('success', 'WhatsApp settings saved.'); + } + + public function testWhatsappConnection(): JsonResponse + { + try { + $status = UltraMessage::getInstanceStatus(); + return response()->json(['success' => true, 'status' => $status]); + } catch (UltraMessageException $e) { + return response()->json(['success' => false, 'message' => $e->getMessage()]); + } + } +} diff --git a/routes/web.php b/routes/web.php index 3a5f597..bcbb81e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -26,6 +26,7 @@ use App\Http\Controllers\Sales\DeliveryNoteController; use App\Http\Controllers\Sales\PaymentReceiptController; use App\Http\Controllers\Sales\SalesInvoiceController; use App\Http\Controllers\Sales\SalesOrderController; +use App\Http\Controllers\SettingsController; use Illuminate\Support\Facades\Route; Route::get('/', function () { @@ -113,6 +114,13 @@ Route::middleware(['auth', 'verified'])->group(function () { Route::resource('invoices', SalesInvoiceController::class); Route::resource('payments', PaymentReceiptController::class); }); + + // Settings (Admin only) + Route::middleware('role:Admin')->group(function () { + Route::get('settings/integrations', [SettingsController::class, 'integrations'])->name('settings.integrations'); + Route::post('settings/integrations/whatsapp', [SettingsController::class, 'updateWhatsapp'])->name('settings.integrations.whatsapp'); + Route::get('settings/integrations/test-whatsapp', [SettingsController::class, 'testWhatsappConnection'])->name('settings.integrations.test-whatsapp'); + }); }); require __DIR__.'/auth.php';