<?php namespace App\Libs\Composers;

use App\Libs\Support\Sanitizer\Sanitizer;
use App\Models\BlogCategory;
use App\Models\BlogPost;
use App\Models\Lang;

class BlogListComposer
{

    public function compose($view)
    {
        $page = request()->get('p') * 1;
        $cats = request()->get('c');

        $sanitizer = new Sanitizer(['search' => request()->input('s')], ['search' => 'strip_tags|xss_clean|trim']);
        $sanitizedData = $sanitizer->sanitize();
        $searchString = $sanitizedData['search'] ?  $sanitizedData['search'] : '';

        $cats = !empty($cats) ? explode(',', $cats) : [];
        if (!is_int($page) || !$page) {
            $page = 1;
        }

        $categories = BlogCategory::full()
            ->with('media')
            ->where('status', 'published')
            ->where('lang_status', 'published')
            ->where('in_filter', 1)
            ->orderBy('website_objects.position', 'asc')
            ->get();

        $featuredPost = BlogPost::full()
            ->with(['media', 'authors'])
            ->where('status', 'published')
            ->where('lang_status', 'published')
            ->where('is_feature_post', '1')
            ->inCategories($cats)
            ->search($searchString)
            ->orderBy('date', 'desc')
            ->first();

        $postsQuery = BlogPost::full()
            ->with(['media', 'authors'])
            ->where('status', 'published')
            ->where('lang_status', 'published')
            ->inCategories($cats)
            ->search($searchString);

        // if ($featuredPost) {
        //     $postsQuery->where('id', '!=', $featuredPost->id);
        // }

        $limit = 12;
        $offset = ($page - 1) * $limit - 1;

        if (!$searchString) {
            $postsQuery->orderBy('date', 'desc');
        }

        $count = $postsQuery->count();

        $posts = $postsQuery->offset($offset)
            ->limit($limit)
            ->get();
        
        $view->with(array(
            'categories' => $categories,
            // 'featuredPost' => $page > 1 ? null : $featuredPost,
            'posts' => $posts,
            'page' => $page,
            'cats' => $cats,
            'searchString' => $searchString,
            'total' => $count,
        ));
    }
}
