<?php

namespace App\Http\Controllers\Frontend;

use App\Components\Functions;
use App\Models\Blog;
use App\Models\Category;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class BlogController extends Controller
{
    //
    public function index()
    {
        $featuredBlogs = Blog::where('id', 16)->get();
        if ($featuredBlogs->count() == 0) {
            $featuredBlogs = Blog::publish()->orderBy('id', 'desc')->take(1)->get();
        }
        $blogs = Blog::publish()->orderBy('id', 'desc')->paginate(12)->onEachSide(4);
        return view('frontend3.blogs_2', compact('featuredBlogs', 'blogs'));
    }

    public function getPostByCategory($slug, Request $request)
    {
        $category = Category::where(['slug' => $slug])->first();

        if (!$category) {
            return redirect('/')->with('error', 'Dữ liệu không hợp lệ');
        }

        $subCats = Functions::getSubCats($category->id);
	    $subCats[] = $category->id;
	    $subCats = array_unique($subCats);
        $blogs = Blog::publish()->select(\DB::raw('blogs.*'))
            ->join('blog_categories', 'blogs.id', '=', 'blog_categories.blog_id')
            ->whereIn('blog_categories.category_id', $subCats)
	        ->orderBy('blogs.id', 'desc');

        if ($request->ajax()) {
            $blogs = $blogs->get();
            return response([
                'status' => 1,
                'data' => view('frontend3.manual.posts_2', compact('blogs', 'category'))->render()
            ]);
        } else {
            $blogs = $blogs->paginate(12);
        }

        return view('frontend3.blogs_2', compact('blogs', 'category'));
    }

    public function search(Request $request)
    {
        $q = $request->input('q');
        $blogs = Blog::featured()->publish()->where('title', 'like', '%' . $q . '%')->paginate(12);
        return view('frontend3.blogs_2', compact('blogs', 'q'));
    }

    public function detail($slug)
    {
        $blog = Blog::publish()->where('slug', $slug)->first();

        if (!$blog) {
            return redirect()->back()->with('error', 'Dữ liệu không hợp lệ');
        }

        $relates = Blog::publish()->where('id', '<>', $blog->id)->orderBy(\DB::raw('RAND()'))->take(3)->get();

        return view('frontend3.blog', compact('blog', 'relates'));
    }
}
