<?php namespace App\Libs\Composers;

use Publication;

class PublicationDetailComposer
{
    use ObjectDetailTrait;

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

        $publicationDetail = Publication::full()
            ->withBlocks()
            ->with('media')
            ->orderBy('website_objects.position', 'asc')
            ->where("lang_slug", $slug)->first();

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

        $metaData = new \stdClass();
        if (!empty($publicationDetail->meta_title)) {
            $metaData->meta_title = $publicationDetail->meta_title;
        } else {
            $metaData->meta_title = cut_string(strip_tags($publicationDetail->title), 100);
        }
        if (!empty($publicationDetail->meta_description)) {
            $metaData->meta_description = $publicationDetail->meta_description;
        } else {
            $metaData->meta_description = cut_string(strip_tags($publicationDetail->summary), 200);
        }
        if ($publicationDetail->media) {
            $metaData->metaImage = getMediaUrl($publicationDetail->media->filename, '1200x627');
        }
        $metaData->meta_keywords = $publicationDetail->meta_keywords;
        if (!empty($publicationDetail->canonical_url)) {
            $metaData->canonical_url = $publicationDetail->canonical_url;
        }
        if (!$publicationDetail->list_on_publications) {
            $metaData->no_index = true;
        }

        $publicationDetail->content = $publicationDetail->details;

        $view->with(array(
            'publicationDetail' => $publicationDetail,
            'metaData' => $metaData,
            'breadcrumbs' => $this->addBreadcrumb($publicationDetail, $data['breadcrumbs'] ?? []),
        ));
    }
}
