<?php
/**
 * Created by PhpStorm.
 * User: radko
 * Date: 2018-12-13
 * Time: 10:13
 */

namespace Seka\Vzdelavanie\Http\Controllers\Api;

use Exception;
use Seka\Vzdelavanie\Http\Resources\SekciaResource;
use Seka\Vzdelavanie\Services\SekciaServiceInterface;
use Seka\Vzdelavanie\Repositories\Exceptions\ModelNotFoundException;

/**
 * Class SekciaController
 * @package Seka\Vzdelavanie\Http\Controllers\Api
 */
class SekciaController extends Controller
{
    /**
     * @var \Seka\Vzdelavanie\Services\SekciaServiceInterface
     */
    private $sekciaService;

    /**
     * SekciaController constructor.
     * @param \Seka\Vzdelavanie\Services\SekciaServiceInterface $sekciaService
     */
    public function __construct(SekciaServiceInterface $sekciaService)
    {
        $this->sekciaService = $sekciaService;
    }

    /**
     * @param int $ucebnicaId
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public function index(int $ucebnicaId)
    {
        try {
            $sekcie = $this->sekciaService->vratZoznamSekciiUcebnehoTextu($ucebnicaId, true, true);
        } catch (ModelNotFoundException $exc) {
            return response()->json([
                'error' => $exc->getMessage(),
            ], 404);
        } catch (Exception $exc) {
            return response()->json([
                'error' => $exc->getMessage() ?: class_basename($exc),
            ], 500);
        }

        return response()->json(['data' => $sekcie]);
//        return SekciaResource::collection($sekcie);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(int $id)
    {
        try {
            $sekcia = $this->sekciaService->vratSekciu($id);
        } catch (ModelNotFoundException $exc) {
            return response()->json([
                'error' => $exc->getMessage(),
            ], 404);
        } catch (Exception $exc) {
            return response()->json([
                'error' => $exc->getMessage() ?: class_basename($exc),
            ], 500);
        }

        return SekciaResource::make($sekcia);
    }
}
