<?php

namespace Yajny\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\Translatable\HasTranslations;
use Yajny\Traits\HasSitemap;

class Page extends Model
{
    use HasTranslations;
    use HasSitemap;

    protected $table = 'pages';
    protected $primaryKey = 'pageID';
    public $translatable = ['title','content','footer_content','meta_title', 'meta_desc', 'heading','h1_tag','h2_tag'];

    public function sections()
    {
        return $this->hasMany(Section::class, 'pageID', 'pageID');
    }

    public function slider($regionCode, $is_multiple = false)
    {
        $sliderQuery = Slider::where('page_id', $this->pageID)
            ->where('is_shown', 1)
            ->orderBy('sort_order');

        if ($regionCode) {
            $sliderQuery->whereJsonContains('region_code', $regionCode);
        } else {
            $sliderQuery->where('show_in_global', 1);
        }

        if ($is_multiple)
            return $sliderQuery->get();
        else
            return $sliderQuery->first();
    }

    public static function getPageInfo($filename = null, $slug = null)
    {
        // TODO : TEST when filename changes
        $pageInfo = null;
        $lang = \Session::get('lang');

        if ($filename)
            $pageInfo = Page::where('filename', $filename)->where('status', 'publish')->first();
        else
            $pageInfo = Page::where('slug', $slug)->where('status', 'publish')->first();

        if ($pageInfo) {
            $pageInfo->timestamps = false;
            $pageInfo->increment('views');
            $pageInfo->save();

            $sections = \Yajny\Models\Section::with([
                'blocks' => function ($query) use ($lang) {
                    $query->where('language', $lang);
                }
            ])
                ->where('pageID', $pageInfo->pageID)
                ->get();

            $allSections = array();
            foreach ($sections as $section) {
                $allSections[$section->code] = $section;
            }
            $pageInfo['sections'] = $allSections;
        }

        return $pageInfo;
    }

    public static function getPageTitles($Ids) {
       
        return Page::whereIn('pageID', $Ids)->select('title',"slug")->orderBy(\DB::raw('FIELD(pageID,'.(implode(',',$Ids)).')'))->get();

    }


}
