<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Http\Resources\AreaResource;
use App\Area;

class AreaController extends Controller
{
    const ITEM_PER_PAGE = 25;

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

        $list = Area::select('id', 'name', 'slug', 'parent_id')
            ->isPublished()
            ->orderBy('order')
            ->orderBy('id');

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

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

        $list = Area::select('id', 'name', 'slug', 'parent_id')
            ->isPublished()
            ->where('show_top', true)
            ->orderBy('order')
            ->orderBy('id')
            ->limit($limit)
            ->get();

        return AreaResource::collection($list);
    }

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

        if ($parentId != null && $parentId != '' && $parentId != '0') {
            $area = Area::select('id')->isPublished()->where('slug', $parentId)->first();
            $parentId = isset($area) ? $area->id : $parentId;
        }

        $list = Area::select('id', 'name', 'slug')
            ->isPublished()
            ->where('parent_id', $parentId)
            ->orderBy('order')
            ->orderBy('id');

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