<?php

namespace App\Http\Resources\V1;

use Illuminate\Http\Resources\Json\JsonResource;
use App\Libs\Database\Eloquent\Collection\ContentTypeCollection;
use App\Services\ExhibitionDataService;

class AppEntryContentResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {

        return [
            'exhibitions' => $this->separateExibitions($this->resource['exhibitions']),
            'news'        => NewsItemResource::collection($this->resource['news']),
            'collections' => CollectionResource::collection($this->resource['collections']),
            'ads'         => AddResource::collection($this->resource['ads']),
        ];
    }


    /**
     * 
     * Separates a collection of exhibitions into 3 time sensitive groups
     * @param ContentTypeCollection $exhibitions
     * 
     * @return array
     */
    private function separateExibitions($exhibitions): array
    {

        $out = ExhibitionDataService::getExhibitionsStructure();

        $current    = $exhibitions->current($exhibitions);
        $comingSoon = $exhibitions->comingSoonSponsored($exhibitions);
        $ending     = $exhibitions->ending($exhibitions);

        $out['coming_soon']['exhibitions'] = ExhibitionListItemResource::collection($comingSoon);
        $out['current']['exhibitions']     = ExhibitionListItemResource::collection($current);
        $out['ending']['exhibitions']      = ExhibitionListItemResource::collection($ending);

        return $out;

        /* $ret['current'] = [
            'name' => trans('api.current'),
            'default' => true,
            'exhibitions' =>  ExhibitionListItemResource::collection($current),
        ];

        $ret['coming_soon'] = [
            'name' => trans('api.coming_soon'),
            'default' => false,
            'exhibitions' =>  ExhibitionListItemResource::collection($comingSoon),
        ];

        $ret['ending'] = [
            'name' => trans('api.ending'),
            'default' => false,
            'exhibitions' =>  ExhibitionListItemResource::collection($ending),
        ];

        return $ret; */
    }
}
