*/ public function toArray(Request $request): array { return [ 'id' => $this->id, 'type' => $this->type->value, 'category_id' => $this->category_id, 'brand_id' => $this->brand_id, 'slug' => $this->slug, 'nombre' => $this->nombre, 'descripcion' => $this->descripcion, 'precio' => $this->precio, 'inventory_policy' => $this->inventory_policy?->value, 'max_units_per_user' => $this->max_units_per_user, 'has_tickets' => $this->has_tickets, 'ticket_generation_policy' => $this->ticket_generation_policy->value, 'validity_time_id' => $this->validity_time_id, 'validity_time' => $this->whenLoaded( 'validityTime', fn () => ValidityTimeResource::make($this->validityTime), ), 'real_stock' => $this->whenLoaded('inventory', fn () => $this->inventory?->real_stock), 'images' => $this->whenLoaded('attachments', fn () => $this->attachments ->map(fn ($attachment) => $attachment->getTemporaryUrl(1440)) ->values()), 'variants' => $this->whenLoaded('variants', fn () => $this->variants ->map(fn ($variant) => [ 'id' => $variant->id, 'event_date_id' => $variant->event_date_id, 'event_date' => $variant->eventDate?->date?->format('Y-m-d'), 'event_date_ids' => $variant->selectedEventDates()->pluck('id')->values(), 'event_dates' => $variant->selectedEventDates()->map(fn ($eventDate): string => $eventDate->date->format('Y-m-d'))->values(), 'descripcion' => $variant->getDescription(), 'precio' => number_format($variant->getPrice(), 2, '.', ''), 'real_stock' => $variant->inventory?->real_stock, 'values' => $variant->selectionOptions($this->itemAttributes), 'images' => $variant->attachments ->map(fn ($attachment) => $attachment->getTemporaryUrl(1440)) ->values(), ]) ->values()), ]; } }