tenant; return response()->json([ 'message' => 'Settings erfolgreich abgerufen.', 'data' => [ 'id' => $tenant->id, 'settings' => $tenant->settings ?? [], 'updated_at' => $tenant->settings_updated_at?->toISOString(), ], ]); } /** * Update the tenant's settings. */ public function update(SettingsStoreRequest $request): JsonResponse { $tenant = $request->tenant; $settings = $request->validated()['settings']; $tenant->update([ 'settings' => $settings, 'settings_updated_at' => now(), ]); return response()->json([ 'message' => 'Settings erfolgreich aktualisiert.', 'data' => [ 'id' => $tenant->id, 'settings' => $settings, 'updated_at' => now()->toISOString(), ], ]); } /** * Reset tenant settings to defaults. */ public function reset(Request $request): JsonResponse { $tenant = $request->tenant; $defaultSettings = [ 'branding' => [ 'logo_url' => null, 'primary_color' => '#3B82F6', 'secondary_color' => '#1F2937', 'font_family' => 'Inter, sans-serif', ], 'features' => [ 'photo_likes_enabled' => true, 'event_checklist' => true, 'custom_domain' => false, 'advanced_analytics' => false, ], 'custom_domain' => null, 'contact_email' => $tenant->contact_email, 'event_default_type' => 'general', ]; $tenant->update([ 'settings' => $defaultSettings, 'settings_updated_at' => now(), ]); return response()->json([ 'message' => 'Settings auf Standardwerte zurueckgesetzt.', 'data' => [ 'id' => $tenant->id, 'settings' => $defaultSettings, 'updated_at' => now()->toISOString(), ], ]); } /** * Validate custom domain availability. */ public function validateDomain(Request $request): JsonResponse { $domain = $request->input('domain'); if (! $domain) { return response()->json(['error' => 'Domain ist erforderlich.'], 400); } if (! $this->isValidDomain($domain)) { return response()->json([ 'available' => false, 'message' => 'Ungueltiges Domain-Format.', ]); } $taken = Tenant::where('custom_domain', $domain) ->where('id', '!=', $request->tenant->id) ->exists(); return response()->json([ 'available' => ! $taken, 'message' => $taken ? 'Domain ist bereits vergeben.' : 'Domain ist verfuegbar.', ]); } private function isValidDomain(string $domain): bool { return filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME) !== false; } }