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

use News;
use Lang;
use Sector;
use DB;
use CfDefaultTemplateCfg;

class CfNewsComposer
{
    use \App\Libs\Composers\SidebarComposerTrait,
        \App\Libs\Composers\BarComposerTrait,
        \App\Libs\Composers\CF\CfRelatedComposerTrait;

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

        $templateData = CfDefaultTemplateCfg::where('entry_id', $page->id)->first();
        $template = config('backoffice.generic.page.templates.2.'.$page->template);

        $types = array();
        array_push($types, array("id" => "all", "label" => Lang::get('frontend.all')));
        array_push($types, array("id" => "news", "label" => Lang::get('frontend.news')));
        array_push($types, array("id" => "in_media", "label" => Lang::get('frontend.in_media')));

        $years = array();
        $availYears = DB::table('news')
            ->select(DB::raw('DISTINCT YEAR(date) as year'))
            ->whereIn('type', ($template['post_type'] == 'news' ? array('news', 'in_media') : array('blog')))
            ->join('website_objects', 'website_objects.object_id', '=', 'news.id')
            ->where('website_objects.website_id', 2)
            ->where('website_objects.object_type', 'News')
            ->orderBy('year', 'desc')
            ->get();

        array_push($years, array("id" => "all", "label" => Lang::get('frontend.all')));
        foreach ($availYears as $year) {
            array_push($years, array("id" => $year->year, "label" => $year->year));
        }
        $this->composeSidebar($view, \CfDefaultTemplateCfg::query());
        $this->composeBars($view, $templateData);
        $this->composeRelated($view, $templateData);

        $filters = array();
        $filters[] = array("id" => "year", "name" => Lang::get('frontend.year'), "values" => $years);
        if ($template['post_type'] == 'news') {
            $filters[] = array("id" => "type", "name" => Lang::get('frontend.type'), "values" => $types);
        }

        $view->with(array(
            'filters' => $filters,
            'postType' => $template['post_type']
        ));
    }
}
