<?php namespace App\Libs\Composers;

use App\Models\Sector;

class SectorsDetailComposer
{
    use SidebarComposerTrait, RelatedComposerTrait, ObjectDetailTrait;

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

        $sectorSlug = last($parameters);

        $sector = Sector::full()
            ->withBlocks()
            ->with(array(
                'relatedCaseStudies' => function ($query) {
                    $query->full()->where('website_objects.status', 'published')
                        ->select("id", "title", "lang_slug as slug", "lang_uri as uri", "tagline", "client_name")
                        ->orderBy("title", "asc");
                }, 'relatedSolutions' => function ($query) {
                    $query->full()->where('website_objects.status', 'published')
                        ->select("id", "title", "lang_slug as slug", "lang_uri as uri", "overview_image_id")
                        ->with(['overviewImage'])
                        ->orderBy("sector_solution.position", "asc");
                }, 'codeEmbeds'
            ))
            ->where("lang_slug", $sectorSlug)->first();

        $this->checkIsPublished($sector, $data['isPreview']);

        /*
        $sustainabilityTopics = SustainabilityTopic::full()
            ->whereHas("solutions.sectors", function($query) use($sector){
                $query->where("id", $sector->id);
            })
            ->with("image")
            ->select("id", "title", "content", "image_id", "image_border")
            ->orderBy("website_objects.position", "asc")->get();
        */
        $this->composeObjectSidebar($view, $sector);
        $this->composeRelated($view, $sector);

        $metaData = new \stdClass();
        if ($sector->meta_title) {
            $metaData->meta_title = $sector->meta_title;
        } else {
            $metaData->meta_title = cut_string(strip_tags($sector->title), 100);
        }
        if ($sector->meta_description) {
            $metaData->meta_description = $sector->meta_description;
        } else {
            $metaData->meta_description = cut_string(strip_tags($sector->summary), 200);
        }
        if ($sector->highlightImage) {
            $metaData->metaImage = getMediaUrl($sector->highlightImage->filename, '400x400');
        }
        $metaData->meta_keywords = $sector->meta_keywords;

        $view->with(array(
            'sector' => $sector,
            //    'sustainabilityTopics' => $sustainabilityTopics,
            'metaData' => $metaData
        ));
    }
}
