<?php

namespace App\Http\Resources;

use App\Models\Route;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;

/**
 * @mixin Route
 */
class RouteResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @return array<string, mixed>
     */
    public function toArray(Request $request): array
    {
        return [
            'feed_id' => $this->feed_id,
            'platform_channel_id' => $this->platform_channel_id,
            'is_active' => $this->is_active,
            'priority' => $this->priority,
            'created_at' => $this->created_at->toISOString(),
            'updated_at' => $this->updated_at->toISOString(),
            'feed' => new FeedResource($this->whenLoaded('feed')),
            'platform_channel' => new PlatformChannelResource($this->whenLoaded('platformChannel')),
            'keywords' => $this->whenLoaded('keywords', function () {
                return $this->keywords->map(function ($keyword) {
                    return [
                        'id' => $keyword->id,
                        'keyword' => $keyword->keyword,
                        'is_active' => $keyword->is_active,
                    ];
                });
            }),
        ];
    }
}
