*/ public function toArray(Request $request): array { return [ 'uuid' => $this->uuid, 'name' => $this->name, 'slug' => $this->slug, 'short_description' => $this->short_description, 'description' => $this->description, 'thumbnail' => $this->thumbnail ? asset($this->thumbnail) : null, 'product_type' => $this->product_type, 'specs' => [ 'cpu' => $this->cpu, 'ram' => $this->ram, 'disk' => $this->disk, 'bandwidth' => $this->bandwidth, 'gpu' => $this->gpu ], 'stock' => $this->stock, 'price' => $this->price, 'price_sale' => $this->price_sale, 'group' => $this->category->name, 'os' => $this->osVersions->groupBy('os_group_id')->map(function ($versions) { $group = $versions->first()->osGroup; return [ 'name' => $group?->name, 'thumbnail' => $group?->thumbnail, 'versions' => $versions->map(fn($os) => [ 'version' => $os->version, 'name' => $os->name, ])->values(), ]; })->values(), ]; } }