<?php

namespace App\Http\Controllers;

use App\Ejaculation;
use App\Tag;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class SearchController extends Controller
{
    public function index(Request $request)
    {
        $inputs = $request->validate([
            'q' => 'required'
        ]);

        $results = Ejaculation::query()
            ->whereHas('tags', function ($query) use ($inputs) {
                $query->where('name', 'like', "%{$inputs['q']}%");
            })
            ->whereHas('user', function ($query) {
                $query->where('is_protected', false);
                if (Auth::check()) {
                    $query->orWhere('id', Auth::id());
                }
            })
            ->where('is_private', false)
            ->orderBy('ejaculated_date', 'desc')
            ->with(['user', 'tags'])
            ->withLikes()
            ->paginate(20)
            ->appends($inputs);

        return view('search.index')->with(compact('inputs', 'results'));
    }

    public function relatedTag(Request $request)
    {
        $inputs = $request->validate([
            'q' => 'required'
        ]);

        $results = Tag::query()
            ->where('name', 'like', "%{$inputs['q']}%")
            ->paginate(50)
            ->appends($inputs);

        return view('search.relatedTag')->with(compact('inputs', 'results'));
    }
}
