<?php

namespace App\Http\Controllers\Api\V1;

use App\Http\Requests\V1\NewsCategoryListRequest;
use App\Http\Resources\V1\NewsCategoryResource;
use App\Http\Resources\V1\NewsCategoryCollection;
use App\Services\NewsCategoryDataService;
use App\Http\Controllers\Api\V1\ApiController;
use App\Libs\Api\ParsedListParams;

class NewsCategoryController extends ApiController
{

    /**
     * Class constructor
     *
     * @param NewsCategoryDataService $newsCategoryDataService
     * @return void
     */
    public function __construct(NewsCategoryDataService $newsCategoryDataService)
    {
        $this->dataService = $newsCategoryDataService;
    }

    /**
     * Gets the list of news categories
     * GET api/v1/news-categories
     * 
     * @return App\Http\Resources\V1\CityCollection
     */
    public function index(NewsCategoryListRequest $request): NewsCategoryCollection
    {

        $data              = $request->validated();
        $parsedListParams  = new ParsedListParams($data);
        $paginatedItems    = $this->dataService->list($parsedListParams);
        return new NewsCategoryCollection($paginatedItems);
    }


    /**
     * Show entity for the given id
     * GET api/v1/news-categories/{id}
     * 
     * @param integer $id
     * 
     * @return App\Http\Resources\V1\CityResource
     */
    public function show(int $id): NewsCategoryResource
    {
        $category = $this->dataService->find($id);
        return new NewsCategoryResource($category);
    }
}
