<?php

    use Eae\Transformation\Transformer\OccurrenceTransformer;

    class OccurrenceController extends Controller
    {
        /**
         * Display the specified resource.
         *
         * @param  string $slug
         * @return Response
         */
        public function show($slug)
        {
            $occurrence = Occurrence::full()
                ->select(
                    'id',
                    'language_id',
                    'title',
                    'lang_slug',
                    'occurrence_date',
                    'meta_title',
                    'meta_description',
                    'meta_image_id',
                    'is_story',
                    'story_id'
                )
                ->with([
                    'blocks' => function ($query) {
                        $query->full()
                            ->select('*')
                            ->with([
                                'blockGallery' => function ($query) {
                                    $query
                                        ->select('*')
                                        ->orderBy('block_media_item.position', 'asc');
                                },
                                'quizzQuestions' => function ($query) {
                                    $query
                                        ->select('*')
                                        ->full()
                                        ->orderBy('block_quizz_question.position', 'asc');
                                }
                            ])
                            ->orderBy('block_occurrence.position', 'asc');
                    },
                    'metaImage',
                    'story' => function ($query) {
                        $query
                            ->select('stories.id','website_objects_lang.lang_slug')
                            ->full();
                    }
                ])
                ->where('lang_slug', $slug)
                ->first();

            if ($occurrence) {
                // Beautify result.
                $result = TransformService::transformItem(
                    $occurrence,
                    new OccurrenceTransformer(),
                    ['blocks.gallery', 'blocks.quizzQuestions'])->toArray();

                return Response::json($result);
            }

            App::abort(404);
        }
    }
