<?php

namespace App\Http\Controllers;

use App\Fortuneteller;
use App\Http\Resources\KeywordResource;
use App\Keyword;
use Illuminate\Support\Arr;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;

class KeywordController extends Controller
{
    const ITEM_PER_PAGE = 15;

    public function index()
    {
        $list = Keyword::select('id', 'name')
            ->where('is_deleted', false)
            ->where('is_activated', true)
            ->orderBy('id')
            ->get();

        return KeywordResource::collection($list);
    }

    public function topKeyword()
    {
        $list = Cache::remember('keyword_topKeyword', (7*24*60*60), function () {
            $items = Keyword::select('id', 'name')
                ->where('is_deleted', false)
                ->where('is_activated', true)
                ->orderBy('id')
                ->paginate(15);

            return ['items' => $items, 'lastModify' => (gmdate('D, d M Y H:i:s') . ' GMT')];
        });

        return KeywordResource::collection($list['items'])->response()->header('Last-Modified', $list['lastModify']);
    }

    public function relateKeyword(Request $request)
    {
        $params = $request->all();
        $limit = Arr::get($params, 'limit', static::ITEM_PER_PAGE);

        $list = Keyword::select('id', 'name')
            ->where('is_deleted', false)
            ->where('is_activated', true)
            ->where('is_related', true)
            ->orderBy('id', 'DESC')
            ->paginate($limit);

        return KeywordResource::collection($list);
    }

    public function noteKeyword(Request $request)
    {
        $params = $request->all();
        $limit = Arr::get($params, 'limit', static::ITEM_PER_PAGE);

        $list = Keyword::select('id', 'name')
            ->where('is_deleted', false)
            ->where('is_activated', true)
            ->where('is_note', true)
            ->orderBy('id', 'DESC')
            ->paginate($limit);

        return KeywordResource::collection($list);
    }
}
