<?php

namespace App\Http\Controllers;

use App\Models\Programs;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;

class ProgramQueryController extends BaseController
{
    public function index(Request $request) {
        $keyword = $request->get("keyword", "");
        $query = Programs::query()->with(["appends", "video_pivots.video"])->where("status", "=", 1)->orderByDesc("created_at");
        if ($keyword) {
            $keyword_split = explode(" ", $keyword);
            foreach ($keyword_split as $_keyword) {
                $_keyword = trim($_keyword);
                if (mb_strlen($_keyword) > 0) {
                    $query->where(function (Builder $_query) use ($_keyword) {
                        $_query
                            ->where("name", "like", "%{$_keyword}%")
                            ->orWhere("difficulty", "like", "%{$_keyword}%")
                            ->orWhere("desc", "like", "%{$_keyword}%")
                            ->orWhereHas("appends", function (Builder $__query) use ($_keyword) {
                                $__query->where("from", "like", "%{$_keyword}%");
                                $__query->orWhere(function (Builder $sub_query) use ($_keyword) {
                                    $sub_query
                                        ->where("is_original", "=", 0)
                                        ->where("name", "like", "%{$_keyword}%");
                                });
                            })
                        ;
                    });
                }
            }
        }
        $programs = $query->paginate(10)->withQueryString();
        return view("program.index", [
            "keyword" => $keyword,
            "programs"=>$programs,
        ]);
    }

    public function videos(Request $request, Programs $program) {
        return view("program.video.index", [
            "program" => $program,
            "videos" => $program->video_pivots,
        ]);
    }
}