<?php namespace App\Libs\Composers\CF;

use CfDefaultTemplateCfg;

trait CfRelatedComposerTrait
{
    protected function composeRelated($view, $object, $relatedField = 'relatedItems', $viewVarName = 'relatedItems')
    {
        if (empty($object)) {
            return;
        }

        $relatedItems = $object->$relatedField()->full()
            ->with(array(
                'cfCaseStudy' => function ($q) {
                    $q->with('overviewImage');
                }, 'project' => function ($q) {
                    $q->with(array(
                        'standard', 'country', 'overviewImage', 'cobenefits' => function ($q) {
                            $q->with(array(
                                'cobenefit' => function ($q) {
                                    $q->with('iconDark');
                                }
                            ));
                        }
                    ));
                }, 'image', 'news', 'eventItem'
            ))
            ->orderBy('website_objects.position')->get();

        $singleLayout = array();
        $doubleLayout = array();
        $doubleFirst = false;

        foreach ($relatedItems as $i => $related) {
            if ($related->layout_type == 'double') {
                if ($i == 0) {
                    $doubleFirst = true;
                }
                $doubleLayout[] = $related;
            } else {
                $singleLayout[] = $related;
            }
        }

        $colsLayout = sizeof($doubleLayout) == 0 ? 'singleOnly' : ($doubleFirst ? 'doubleFirst' : 'singleFirst');

        $view->with(array(
            $viewVarName => $relatedItems,
            'singleLayout' => $singleLayout,
            'doubleLayout' => $doubleLayout,
            'colsLayout' => $colsLayout
        ));
    }
}

?>
