<?php

namespace App\Libs\Composers;

use App\Models\ClimateWeekTemplateConfiguration;
use App\Models\Contact;
use App\Models\NyClimateWeekEvent;

class ClimateWeekTemplateComposer
{

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

        $templateData = ClimateWeekTemplateConfiguration::full()
            ->where('entry_id', $page->id)
            ->first();

        $events = NyClimateWeekEvent::full()
            ->where('status', 'published')
            ->orderBy('website_objects.position', 'asc')
            ->with(['media'])
            ->get();

        $contact      = null;
        $contactModel = $templateData->contact;

        if (!is_null($contactModel)) {
            $contact = [
                'id'           => $contactModel->id,
                'name'         => $contactModel->name,
                'email'        => $contactModel->email,
                'phone'        => $contactModel->phone,
                'title'        => $contactModel->title,
                'subtitle'     => $contactModel->subtitle,
                'job_position' => $contactModel->job_position,
            ];
        }

        $handledEvents = [];

        foreach ($events as $event) {
            $handledEvents[] = [
                'id'            => ($event->id . ''),
                'type'          => $event->type,
                'title'         => $event->title,
                'summary'       => $event->summary,
                'media'         => $event->media ? getMediaUrl($event->media->filename, '300x200') : '',
                'link'          => generateLink($event->link, '', '', '', true),
                'location_lat'  => $event->location_lat,
                'location_lng'  => $event->location_lng,
                'location_zoom' => $event->location_zoom,
            ];
        }

        $view->with([
            'templateData' => $templateData,
            'events'       => $handledEvents,
            'contact'      => $contact,
        ]);
    }
}
