<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Facades\Services\SearchService;
use Illuminate\Pagination\LengthAwarePaginator;

class SearchController extends Controller
{
    public function search($q = '')
    {
        $lang = getActiveLanguage();
        $page = (int)request('page');
        if ($q) {
            $query = $q;
        } else {
            $query = (string)request('q');
        }
        if (empty($query)) {
            return [
                'results' => [],
                'searchParam' => '',
                'count' => 0,
                'slug' => 'search',
            ];
        }

        if ($page > 1) {
            $results = SearchService::search($query, $lang, 150);
            $perPage = 7;
            $currentItems = array_slice($results, $perPage * ($page - 1), $perPage);
            $items = new LengthAwarePaginator($currentItems, count($results), $perPage, $page);
            return [
                'results' => $items,
                'searchParam' => $query,
                'count' => count($results),
                'slug' => 'search',
            ];
        } else {
            if ($query) {
                $results = SearchService::search($query, $lang, 150);
                $perPage = 7;
                $currentItems = array_slice($results, $perPage * ($page - 1), $perPage);
                $items = new LengthAwarePaginator($currentItems, count($results), $perPage, $page);
                return [
                    'results' => $items,
                    'searchParam' => $query,
                    'count' => count($results),
                    'slug' => 'search',
                ];
            }
        }
    }
}
