<?php

namespace App\Domains\Forms\Resources;

use App\Domains\Catalog\Models\AttributeOption;
use App\Domains\Event\Models\EventDate;
use App\Domains\Ticket\Resources\ValidityTimeResource;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Collection;

class FoodFormResource extends JsonResource
{
    /** @return array<string, mixed> */
    public function toArray(Request $request): array
    {
        return [
            'event_dates' => $this->resource['event_dates']->map(
                fn (EventDate $eventDate): array => [
                    'id' => $eventDate->id,
                    'validity_time_id' => $eventDate->validity_time_id,
                    'validity_time' => ValidityTimeResource::make($eventDate->validityTime),
                    'date' => $eventDate->date->format('Y-m-d'),
                ]
            )->values(),
            'schedules' => $this->options($this->resource['schedules']),
            'services' => $this->options($this->resource['services']),
        ];
    }

    /**
     * @param  Collection<int, AttributeOption>  $options
     * @return Collection<int, array{value: string, label: string}>
     */
    private function options(Collection $options): Collection
    {
        return $options->map(fn (AttributeOption $option): array => [
            'value' => $option->value,
            'label' => $option->label,
        ])->values();
    }
}
