<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\GenericBackoffice\Entry;
use App\Http\Requests\Api\BaseShow;
use App\Http\Resources\Entries;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Resources\Json\JsonResource;

class EntryController extends Controller
{

    /**
     * Display the specified resource.
     *
     * @param BaseShow $request
     * @return JsonResource|JsonResponse
     */
    public function show(BaseShow $request)
    {
        $data = $request->validated();
        $query = Entry::full()
            ->select('*')
            ->where('status', 'published')
            ->where('lang_slug', $data['slug'])
            ->orderBy('website_objects.website_object_id', 'desc');


        $query->with([
            'blocks' => function ($query) {
                $query
                    ->full()
                    ->where('status', 'published')
                    ->orderBy('entry_block.position', 'asc');
            }
        ]);

        $entry = $query->first();

        if ($entry) {
            return new Entries($entry);
        }
        return response()->json([], 404);
    }
}
