<?php namespace App\Libs\Composers;

use EventItem;

class EventsDetailComposer
{
    use SidebarComposerTrait, ObjectDetailTrait;

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

        $eventsDetail = EventItem::full()
            ->withBlocks()
            ->with(array(
                'media', 'document'
                => function ($query) {
                        $activeLang = \Localization::getActiveLocale();
                        $query->where('event_items_documents.language_id', '=', $activeLang);
                    }, 'pardotForm' => function ($query) {
                    $query->full();
                }
            ))
            ->orderBy('website_objects.position', 'asc')
            ->where("lang_slug", $slug)->first();

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

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

        if ($eventsDetail->no_index) {
            $metaData->no_index = true;
        }

        $this->composeObjectSidebar($view, $eventsDetail);

        $pardotData = [];
        if (!empty($eventsDetail->pardotForm)) {
            if ($eventsDetail->pardotForm->type === 'webinar') {
                $pardotData['Webinar_Title'] = $eventsDetail->pardotForm->extra_title
                    ? $eventsDetail->pardotForm->extra_title
                    : $eventsDetail->title;
            } else if ($eventsDetail->pardotForm->type === 'event') {
                $pardotData['Event_Title'] = $eventsDetail->pardotForm->extra_title
                    ? $eventsDetail->pardotForm->extra_title
                    : $eventsDetail->title;
            }
        }

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