<?php

namespace App\Http\Controllers\Frontend\Forum;

use App\Http\Controllers\Controller;
use App\Models\Forums\ForumChannel;
use App\Models\Forums\ForumThread;
use App\Models\Lab;
use App\Models\Tag;
use Illuminate\Http\Request;

class ForumChannelController extends Controller
{
    /**
     * Display a listing of the resource, with threads .
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        if (isset($request['searchtags'])) {
            $allthreads = ForumThread::notInLabForum()->withTags($request['searchtags'])->latest()->paginate(20);
        } else {
            $allthreads = ForumThread::notInLabForum()->latest()->paginate(20);
        }
        $channels = ForumChannel::notInLabForum()->get();
        $tags = Tag::where(['primary' => 1])->get();
        //dd($tags);
        return view('frontend.forum.channel.index')
            ->with('channels', $channels)
            ->with('tags', $tags)
            ->with('allthreads', $allthreads);
    }

    public function labindex(Request $request, $id)
    {

        // is the user allowed to see this?
        //dd(\Auth::user()->labs()->get()->pluck('id')->contains($id));
        if (\Auth::user()->labs()->get()->pluck('id')->contains($id) || \Auth::user()->hasRole('administrator')) {
            if (isset($request['search'])&&(strlen($request['search'])>0)) {
                //dd($request['search']);
                $allthreads = ForumThread::where('title', 'like', '%' . $request['search'] . '%')->orWhere('body', 'like', '%' . $request['search'] . '%')->inLabForum($id)->latest()->paginate(20);

            } else {
                $allthreads = ForumThread::inLabForum($id)->latest()->paginate(20);
            }
            $channels = ForumChannel::where('lab_id', $id)->get();
            $tags = Tag::where(['primary' => 1])->get();
            $lab = Lab::find($id);
            //dd($tags);
            return view('frontend.forum.channel.index')
                ->with('channels', $channels)
                ->with('tags', $tags)
                ->with('allthreads', $allthreads)
                ->with('lab', $lab);
        } else {
            return redirect(route('frontend.index'))->withFlashDanger("Not your lab!");
        }
    }


    /**
     * Store a channel
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }


    /**
     * Show the form for editing the specified resource.
     *
     * @param
     * @return \Illuminate\Http\Response
     */
    public function edit()
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */

    public function create(Request $request)
    {
        //dd($id);
        //dd($request->all());
        $params = $request->all();
        $params['user_id'] = auth()->id();

        $newChannel = ForumChannel::create($params);
        return array(
            'status' => (($newChannel->id > 0) ? 0 : 1),
        );

    }

    public function update($id, Request $request)
    {
        $input = $request->all();
        return array(
            'status' => (ForumChannel::find($id)->update($input) ? 0 : 1),
        );
    }

    public function show($id)
    {
        return ForumChannel::find($id);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
