*/ public function toArray(Request $request): array { $tenantId = $request->attributes->get('tenant_id'); // Hide sensitive data for other tenants $showSensitive = $this->tenant_id === $tenantId; return [ 'id' => $this->id, 'name' => $this->name, 'slug' => $this->slug, 'description' => $this->description, 'event_date' => $this->event_date ? $this->event_date->toISOString() : null, 'location' => $this->location, 'max_participants' => $this->max_participants, 'current_participants' => $showSensitive ? $this->photos_count : null, 'public_url' => $this->public_url, 'custom_domain' => $showSensitive ? $this->custom_domain : null, 'theme_color' => $this->theme_color, 'status' => $showSensitive ? $this->status : 'published', 'password_protected' => $this->password_protected, 'features' => $this->features, 'event_type' => new EventTypeResource($this->whenLoaded('eventType')), 'photos' => PhotoResource::collection($this->whenLoaded('photos')), 'tasks' => $showSensitive ? $this->whenLoaded('tasks') : [], 'tenant' => $showSensitive ? [ 'id' => $this->tenant->id, 'name' => $this->tenant->name, 'event_credits_balance' => $this->tenant->event_credits_balance, ] : null, 'created_at' => $this->created_at->toISOString(), 'updated_at' => $this->updated_at->toISOString(), 'photo_count' => $this->photos_count, 'like_count' => $this->photos->sum('likes_count'), 'is_public' => $this->status === 'published' && !$this->password_protected, 'public_share_url' => $showSensitive ? route('api.v1.events.show', ['slug' => $this->slug]) : null, 'qr_code_url' => $showSensitive ? route('api.v1.events.qr', ['event' => $this->id]) : null, ]; } }