loadTenant($request->user()) ); } public function showExtra(Request $request, string $websiteExtraCode): WebsiteExtraResource { $tenant = $this->loadTenant($request->user()); $definition = $this->websiteExtraService->definitionForTenant($tenant, $websiteExtraCode); $websiteExtra = $tenant->websiteExtras ->firstWhere('website_type_extra_id', $definition->id); if (! $websiteExtra) { abort(404); } return WebsiteExtraResource::make($websiteExtra); } public function update( UpdateWebsiteExtraRequest $request, string $websiteExtraCode ): WebsiteExtrasResource { $tenant = $request->user()->tenant()->firstOrFail(); $this->websiteExtraService->updateForTenant( $tenant, $websiteExtraCode, $request->validated('config') ); return WebsiteExtrasResource::make( $this->loadTenant($request->user()) ); } public function toggle(Request $request, string $websiteExtraCode): WebsiteExtrasResource { $tenant = $request->user()->tenant()->firstOrFail(); $this->websiteExtraService->toggleForTenant($tenant, $websiteExtraCode); return WebsiteExtrasResource::make( $this->loadTenant($request->user()) )->additional([ 'code' => 'tenant.website_extra_toggled', 'message' => __('api.tenant.website_extra_toggled'), ]); } private function loadTenant(User $user): Tenant { $tenant = $user->tenant()->firstOrFail(); return $this->tenantInformationService->load($tenant, [ 'websiteType.extras', ]); } }