*/ public function toArray(Request $request): array { $tenantId = $request->attributes->get('tenant_id'); $showSensitive = $this->event->tenant_id === $tenantId; return [ 'id' => $this->id, 'filename' => $this->filename, 'original_name' => $this->original_name, 'mime_type' => $this->mime_type, 'size' => $this->size, 'url' => $showSensitive ? $this->getFullUrl() : $this->getThumbnailUrl(), 'thumbnail_url' => $this->getThumbnailUrl(), 'width' => $this->width, 'height' => $this->height, 'status' => $showSensitive ? $this->status : 'approved', 'moderation_notes' => $showSensitive ? $this->moderation_notes : null, 'likes_count' => $this->likes_count, 'is_liked' => $showSensitive ? $this->isLikedByTenant($tenantId) : false, 'uploaded_at' => $this->created_at->toISOString(), 'event' => [ 'id' => $this->event->id, 'name' => $this->event->name, 'slug' => $this->event->slug, ], ]; } /** * Get full image URL */ private function getFullUrl(): string { return url("storage/events/{$this->event->slug}/photos/{$this->filename}"); } /** * Get thumbnail URL */ private function getThumbnailUrl(): string { return url("storage/events/{$this->event->slug}/thumbnails/{$this->filename}"); } }