<?php

namespace Modules\Faq\Http\Controllers;

use App\Models\Universities;
use App\Models\Course;
// use App\Models\Faq;
use Modules\Faq\Entities\Faq;
use Illuminate\Routing\Controller;
use Modules\Faq\Actions\CreateFaq;
use Modules\Faq\Actions\DeleteFaq;
use Modules\Faq\Actions\UpdateFaq;
// use Modules\Faq\Entities\FaqCategory;
use App\Models\Category;
use Modules\Language\Entities\Language;
use Illuminate\Contracts\Support\Renderable;
use Modules\Faq\Http\Requests\FaqFormRequest;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;

class FaqController extends Controller
{
    use ValidatesRequests;

    /**
     * Display a listing of the resource.
     * @return Renderable
     */
    public function index(Request $request, $slug = null)
    {
        $condition=[];
        abort_if(!userCan('faq.view'), 403);

        $faq_category = Category::withCount('faqs')->get();

        // if ($slug) {
        //     $faqs = Faq::whereHas('faq_category', function ($q) use ($slug) {
        //         $q->where('slug', $slug);
        //            // countries_type
    
        //     })->paginate(10);
        //     $faqs_group = $faqs->groupBy('code');
        // } else {
        //     $faqs = Faq::paginate(10);
        //     $faqs_group = $faqs->groupBy('code');
        // }


        if ($slug) {
            $faqs = Faq::whereHas('category', function ($q) use ($slug) {
                $q->where('slug', $slug);
            });
        } else {
            $faqs = Faq::query();
        }
        if($request->has('search')){
            $condition[]=["page_id",  $request->search];
            $condition[]=['category_id' , 2];
        }
        // if ($request->search && $request->universities != null) {
        //     $faqs->where('category_id', 2);   /////////faq university id is 2////////
        //     $faqs->where('page_id', $request->universities);
           
        // }
        
        $faqs = $faqs->where($condition)->paginate(10);
        $faqs->appends(request()->except('page'));
        $faqs_group = $faqs->groupBy('code');

        // dd("test");
        $all_faqs_count = Faq::count();

        $universities = Universities::all('id','name');

        return view('faq::index', compact('faq_category', 'faqs','all_faqs_count','faqs_group', 'universities'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Renderable
     */
    public function create()
    {
        abort_if(!userCan('faq.create'), 403);
        $universities = Universities::all(['id','name']);
        $courses = Course::all(['id','name']);
        $universities = Universities::all(['id','name']);
        $app_languages = Language::all(['id', 'name','code']);
        $faq_categories = Category::oldest('order')->get();
        return view('faq::create', compact('faq_categories','app_languages','universities'));
    }

    /**
     * Store a newly created resource in storage.
     * @param FaqFormRequest $request
     * @return Renderable
     */
    public function store(FaqFormRequest $request)
    {
        abort_if(!userCan('faq.create'), 403);
        if(!empty($request->universities_id)){
            // $universities_ids = implode(",", $request->universities_id);
            $request['universities_ids'] = $request->universities_id;
        }else{
            $request['universities_ids'] = NULL;
        }

        $faq = CreateFaq::create($request);

        if ($faq) {
            flashSuccess(__('faq_created_successfully'));
            return back();
        } else {
            flashError();
            return back();
        }
    }

    /**
     * Show the form for editing the specified resource.
     * @param int $id
     * @return Renderable
     */
    public function edit(Faq $faq)
    {
        abort_if(!userCan('faq.update'), 403);
        $universities = Universities::all(['id','name']);
        // $universities_ids = explode(",", $faq->page_id);
        $universities_ids = isset($faq->page_id)? $faq->page_id : 0;
        $app_languages = Language::all(['id', 'name','code']);
        $faq_categories = Category::oldest('order')->get();
        return view('faq::edit', compact('faq', 'faq_categories','app_languages','universities_ids','universities'));
    }

    /**
     * Update the specified resource in storage.
     * @param FaqFormRequest $request
     * @param int $id
     * @return Renderable
     */
    public function update(FaqFormRequest $request, Faq $faq)
    {
        abort_if(!userCan('faq.update'), 403);
        if(!empty($request->universities_id)){
            // $universities_ids = implode(",", $request->universities_id);
            $request['universities_ids'] = $request->universities_id;
        }else{
            $request['universities_ids'] = NUll;
        }


        $faq = UpdateFaq::update($request, $faq);

        if ($faq) {
            flashSuccess(__('faq_updated_successfully'));
            return redirect(route('module.faq.index'));
        } else {
            flashError();
            return back();
        }
    }

    /**
     * Remove the specified resource from storage.
     * @param int $id
     * @return Renderable
     */
    public function destroy(Faq $faq)
    {
        abort_if(!userCan('faq.delete'), 403);

        $faq = DeleteFaq::delete($faq);

        if ($faq) {
            flashSuccess(__('faq_deleted_successfully'));
            return redirect(route('module.faq.index'));
        } else {
            flashError();
            return back();
        }
    }

    public function getSelectBycategory(Request $request)
    {
    
       if($request->category_id == 2){
        $data['faqSelect'] = [];
        $data['faqSelect']  = Universities::get(['id','name']);
       }elseif($request->category_id == 3){
        $data['faqSelect'] = [];
        $data['faqSelect']  = Course::get(['id','name']);
       }else{
        $data['faqSelect'] = [];
        $data['faqSelect'] = 0;
       }
      
    //    dd($data['faqSelect']);
        return response()->json($data);
    }
}
