resource->attributesToArray(); if ($this->resource instanceof \App\Models\NasMikrotik) $data['effective_backend_mode'] = $this->resource->effectiveBackendMode(); unset($data['api_password'], $data['radius_secret'], $data['community'], $data['auth_password'], $data['privacy_password'], $data['password']); $data['tenant'] = $this->whenLoaded('tenant', fn () => [ 'id' => $this->tenant->id, 'tenant_code' => $this->tenant->tenant_code, 'tenant_name' => $this->tenant->tenant_name, ]); $data['scripts'] = $this->whenLoaded('scripts', fn () => $this->scripts->map(fn ($policy) => [ 'id' => $policy->id, 'code' => $policy->code, 'name' => $policy->name, 'service_type' => $policy->service_type, 'event' => $policy->event, 'current_version' => $policy->current_version, 'latest_version' => $policy->relationLoaded('latestVersion') && $policy->latestVersion ? [ 'id' => $policy->latestVersion->id, 'version' => $policy->latestVersion->version, ] : null, 'pivot' => [ 'event' => $policy->pivot->event, 'nas_script_policy_version_id' => $policy->pivot->nas_script_policy_version_id, 'enabled' => (bool) $policy->pivot->enabled, ], ])); foreach ([ 'api_password' => 'has_api_password', 'radius_secret' => 'has_radius_secret', 'community' => 'has_community', 'auth_password' => 'has_auth_password', 'privacy_password' => 'has_privacy_password', 'password' => 'has_password', ] as $column => $flag) { if (array_key_exists($column, $this->resource->getAttributes())) { $data[$flag] = filled($this->resource->getRawOriginal($column)); } } return $data; } }