*/ public function toArray(Request $request): array { $itemAttributes = $this->itemAttributes->keyBy( fn ($itemAttribute) => $itemAttribute->attribute?->codigo ); $colorAttribute = $itemAttributes->get('color'); $sizeAttribute = $itemAttributes->get('talle'); $colorOptions = $colorAttribute?->attribute?->options?->keyBy('value') ?? collect(); $sizeOptions = $sizeAttribute?->attribute?->options?->keyBy('value') ?? collect(); return [ 'id' => $this->id, 'title' => $this->nombre, 'description' => $this->descripcion, 'max_units_per_user' => $this->max_units_per_user, 'variants' => $this->variants->map(function ($variant) use ( $colorAttribute, $sizeAttribute, $colorOptions, $sizeOptions, ): array { $colorValue = $variant->definitions ->firstWhere('item_attribute_id', $colorAttribute?->id) ?->value; $sizeValue = $variant->definitions ->firstWhere('item_attribute_id', $sizeAttribute?->id) ?->value; return [ 'id' => $variant->id, 'color' => $colorOptions->get($colorValue)?->label ?? $colorValue, 'color_value' => $colorValue, 'size' => $sizeOptions->get($sizeValue)?->label ?? $sizeValue, 'size_value' => $sizeValue, 'stock' => $variant->inventory->real_stock, 'price' => number_format($variant->getPrice(), 2, '.', ''), ]; })->values(), ]; } }