UserSetting::get('dark_mode', 'false'), 'bg_color' => UserSetting::get('bg_color', '#ffffff'), 'text_color' => UserSetting::get('text_color', '#1e293b'), 'accent_color' => UserSetting::get('accent_color', '#6366f1'), 'sidebar_bg_color' => UserSetting::get('sidebar_bg_color', '#fde047'), 'sidebar_text_color' => UserSetting::get('sidebar_text_color', '#1e293b'), 'sidebar_accent_color' => UserSetting::get('sidebar_accent_color', '#6366f1'), 'registration_enabled' => (string) (SystemSetting::bool('registration_enabled', true) ? 'true' : 'false'), 'require_email_verification' => (string) (SystemSetting::bool('require_email_verification', true) ? 'true' : 'false'), 'recaptcha_version' => (string) SystemSetting::getValue('recaptcha_version', 'none'), 'recaptcha_site_key' => (string) SystemSetting::getValue('recaptcha_site_key', ''), 'recaptcha_secret_key' => (string) SystemSetting::getValue('recaptcha_secret_key', ''), 'telegram_bot_token' => (string) SystemSetting::getValue('telegram_bot_token', ''), 'telegram_webhook_token' => (string) SystemSetting::getValue('telegram_webhook_token', ''), 'whatsapp_phone_number_id' => (string) SystemSetting::getValue('whatsapp_phone_number_id', ''), 'whatsapp_business_account_id' => (string) SystemSetting::getValue('whatsapp_business_account_id', ''), 'whatsapp_access_token' => (string) SystemSetting::getValue('whatsapp_access_token', ''), 'whatsapp_webhook_token' => (string) SystemSetting::getValue('whatsapp_webhook_token', ''), ]; $googleStatus = $this->googleStatus(); return view('superadmin.impostazioni.index', compact('settings', 'googleStatus')); } public function store(Request $request) { $validated = $request->validate([ 'dark_mode' => 'string|in:true,false', 'bg_color' => 'string|max:7', 'text_color' => 'string|max:7', 'accent_color' => 'string|max:7', 'sidebar_bg_color' => 'string|max:7', 'sidebar_text_color' => 'string|max:7', 'sidebar_accent_color' => 'string|max:7', 'registration_enabled' => 'nullable|string|in:true,false', 'require_email_verification' => 'nullable|string|in:true,false', 'recaptcha_version' => 'nullable|string|in:none,v2,v3', 'recaptcha_site_key' => 'nullable|string|max:255', 'recaptcha_secret_key' => 'nullable|string|max:255', 'telegram_bot_token' => 'nullable|string|max:255', 'telegram_webhook_token' => 'nullable|string|max:255', 'whatsapp_phone_number_id' => 'nullable|string|max:255', 'whatsapp_business_account_id' => 'nullable|string|max:255', 'whatsapp_access_token' => 'nullable|string|max:500', 'whatsapp_webhook_token' => 'nullable|string|max:255', ]); $globalKeys = [ 'registration_enabled', 'require_email_verification', 'recaptcha_version', 'recaptcha_site_key', 'recaptcha_secret_key', 'telegram_bot_token', 'telegram_webhook_token', 'whatsapp_phone_number_id', 'whatsapp_business_account_id', 'whatsapp_access_token', 'whatsapp_webhook_token', ]; foreach ($validated as $key => $value) { if (in_array($key, $globalKeys, true)) { SystemSetting::setValue($key, $value); } else { UserSetting::set($key, $value); } } if ($request->expectsJson()) { return response()->json(['success' => true, 'message' => 'Impostazioni salvate con successo!']); } return back()->with('success', 'Impostazioni salvate con successo.'); } public function theme(Request $request) { $theme = $request->input('theme', 'default'); $themes = [ 'default' => [ 'bg_color' => '#ffffff', 'text_color' => '#1e293b', 'accent_color' => '#6366f1', 'sidebar_bg_color' => '#fde047', 'sidebar_text_color' => '#1e293b', 'sidebar_accent_color' => '#6366f1', ], 'dark' => [ 'bg_color' => '#1e293b', 'text_color' => '#f1f5f9', 'accent_color' => '#fbbf24', 'sidebar_bg_color' => '#374151', 'sidebar_text_color' => '#f1f5f9', 'sidebar_accent_color' => '#fbbf24', ], 'ocean' => [ 'bg_color' => '#f0f9ff', 'text_color' => '#0c4a6e', 'accent_color' => '#0ea5e9', 'sidebar_bg_color' => '#0ea5e9', 'sidebar_text_color' => '#ffffff', 'sidebar_accent_color' => '#f0f9ff', ], ]; if (isset($themes[$theme])) { foreach ($themes[$theme] as $key => $value) { UserSetting::set($key, $value); } } return response()->json(['success' => true, 'settings' => $themes[$theme] ?? []]); } private function googleStatus(): array { $clientId = (string) config('services.google.client_id', ''); $clientSecret = (string) config('services.google.client_secret', ''); $redirect = (string) config('services.google.redirect', ''); $admin = null; $user = Auth::user(); if ($user && method_exists($user, 'amministratore') && $user->amministratore) { $admin = $user->amministratore; } if (! $admin instanceof Amministratore) { $admin = Amministratore::query()->latest('id')->first(); } $google = Arr::get($admin?->impostazioni ?? [], 'google', []); $oauth = Arr::get($google, 'oauth', []); return [ 'client_id_configured' => $clientId !== '', 'client_secret_configured' => $clientSecret !== '', 'redirect_configured' => $redirect !== '', 'oauth_connected' => (bool) Arr::get($oauth, 'connected', false), 'oauth_email' => (string) Arr::get($oauth, 'email', ''), 'calendar_enabled' => (bool) Arr::get($oauth, 'connected', false), 'contacts_enabled' => (bool) Arr::get($oauth, 'connected', false), 'drive_enabled' => (bool) Arr::get($oauth, 'connected', false), ]; } }