<?php namespace App\Libs\Composers;

use SustainabilityTopic;
use Cobenefit;
use Country;
use ProjectsTemplateCfg;

class ProjectsComposer
{

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

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

        $sustainabilityTopics = SustainabilityTopic::full()
            ->select('title as value', 'id')
            // ->with('image')
            ->whereExists(function ($query) {
                $query->select(\DB::raw(1))
                    ->from("related")
                    ->whereRaw("website_objects.website_object_id = related.related_id")
                    ->join("website_objects as wo", "related.website_object_id", "=", "wo.website_object_id")
                    ->where("related.type", "sustainability")
                    ->where("wo.status", 'published')
                    ->where('wo.website_id', 1);
            })
            ->orderBy('website_objects.position', 'asc')
            ->get();

        $cobenefits = Cobenefit::full()
            // ->with('iconDark')
            ->select('title as value', 'id')
            ->where('sdg_number', '>', 0)
            ->whereExists(function ($query) {
                $query->select(\DB::raw(1))
                    ->from("project_cobenefits")
                    ->whereRaw("project_cobenefits.cobenefit_id = cobenefits.id")
                    ->join('website_objects', 'project_cobenefits.project_id', '=', 'object_id')
                    ->where('website_objects.object_type', 'Project')
                    ->where('website_id', 1)
                    ->where('status', 'published');
            })
            ->orderBy('sdg_number', 'asc')
            ->get();

        $countries = Country::full()
            ->select('title as value', 'id')
            ->whereExists(function($query) {
                $query->select(\DB::raw(1))
                    ->from('projects')
                    ->whereRaw('countries.id = projects.country_id')
                    ->join('website_objects', 'projects.id', '=', 'object_id')
                    ->where('website_objects.object_type', 'Project')
                    ->where('website_id', 1)
                    ->where('status', 'published');
            })
            ->orderBy('title')
            ->get();

        $view->with(array(
            'templateData' => $templateData,
            'sustainabilityTopics' => $sustainabilityTopics->toArray(),
            'cobenefits' => $cobenefits->toArray(),
            'countries' => $countries->toArray(),
        ));
    }
}
