<?php namespace App\Libs\Composers\CF;

use CfDefaultTemplateCfg;

class CfSolutionDetailTemplateComposer
{
    use \App\Libs\Composers\SidebarComposerTrait,
        \App\Libs\Composers\BarComposerTrait,
        \App\Libs\Composers\CF\CfRelatedComposerTrait;

    public function compose($view)
    {
        $data = $view->getData();
        $parameters = $data['parameters'];
        $page = $data['object'];
        $solutionSlug = last($parameters);

        $templateData = \CfSolutionsTemplateCfg::with(array(
            'headerImage', 'tiles' => function ($q) {
                $q->full()->with('image', 'sideImage')->orderBy("website_objects.position", "asc");
            }
        ))->where('entry_id', $page->id)->first();

        $solution = \CfSolution::full()
            ->with(array(
                'headerMedia', 'topics' => function ($query) {
                    $query->with('image')
                        ->orderBy('position');
                }, 'codeEmbeds'
            ))
            ->where("slug", $solutionSlug)->first();

        if (!$solution) {
            abort(404);
        }

        if ($solution->status != 'published') {
            $user = \Auth::guard('admin')->user();
            if (!$user) {
                abort(404);
            }
        }

        if (!$solution || $solution->type !== $templateData->type) {
            abort(404);
        }

        if (empty($solution)) {
            abort(404);
        }

        $this->composeObjectSidebar($view, $solution);
        $this->composeBars($view, $solution);
        $this->composeRelated($view, $solution);

        $metaData = new \stdClass();
        if (!empty($solution->meta_title)) {
            $metaData->meta_title = $solution->meta_title;
        } else {
            $metaData->meta_title = cut_string(strip_tags($solution->title), 100);
        }
        if (!empty($solution->meta_description)) {
            $metaData->meta_description = $solution->meta_description;
        } else {
            $metaData->meta_description = cut_string(strip_tags($solution->summary), 200);
        }
        $metaData->meta_keywords = $solution->meta_keywords;
        /*
        if ($solution->overviewImage) {
            $metaData->metaImage = getMediaUrl($solution->overviewImage->filename, '340x300');
        }
        */

        $view->with(array(
            'solution' => $solution,
            'metaData' => $metaData
        ));
    }
}
