<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Http\Resources\PageResource;
use App\Page;

class PageController extends Controller
{
    const ITEM_PER_PAGE = 25;

    public function index(Request $request)
    {
        $searchParams = $request->all();
        $limit = Arr::get($searchParams, 'limit', static::ITEM_PER_PAGE);
        $group = Arr::get($searchParams, 'group', 0);
        $keyword = Arr::get($searchParams, 'keyword', '');
        $list = Page::isPublished()->where('group', $group);

        if (!empty($keyword)) {
            $list->where('title', 'LIKE', '%' . $keyword . '%');
        }

        $list->orderBy('id', 'ASC');

        return PageResource::collection($list->paginate($limit));
    }

    public function all(Request $request)
    {
        $searchParams = $request->all();
        $limit = Arr::get($searchParams, 'limit', static::ITEM_PER_PAGE);
        $group = Arr::get($searchParams, 'group', 0);
        $keyword = Arr::get($searchParams, 'keyword', '');
        $list = Page::select('id', 'title', 'slug', 'thumbnail')->isPublished()->where('group', $group);

        if (!empty($keyword)) {
            $list->where('title', 'LIKE', '%' . $keyword . '%');
        }

        $list->orderBy('id', 'ASC');

        return PageResource::collection($list->paginate($limit));
    }

    public function show($slug = '')
    {
        $data = [
            'status'  => 'error',
            'page'    => null,
            'message' => 'Page is not valid'
        ];

        $slug = str_replace("/", "", $slug);
        $page = Page::isPublished()->where('slug', $slug)->first();
        if ($page) {
            $data['status'] = 'success';
            $data['page'] = [ 'title' => $page->title, 'slug' => $page->slug, 'thumbnail' => $page->thumbnail, 'description' => $page->description, 'content' => $page->content ];
            $data['message'] = 'success';
        }

        return response()->json($data, 200);
    }

    public function slug(Request $request)
    {
        $searchParams = $request->all();
        $slug = Arr::get($searchParams, 'slug', '');
        $data = [ 'status' => 'error', 'pages' => null, 'message' => 'Page is not valid' ];

        $pages = Page::isPublished()
            ->select('id', 'title', 'slug', 'thumbnail', 'description', 'content')
            ->where('slug', $slug)
            ->orderBy('id')
            ->get();

        if ($pages->count() > 0) {
            $data = [ 'status' => 'success', 'pages' => $pages->toArray(), 'message' => 'success' ];
        }

        return response()->json($data, 200);
    }


}
