<?php

namespace App\Libs\Services;

use App\Models\GenericBackoffice\WebsiteObject;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;

class SearchService
{
    public function search($q, $lang, $pageNumber = 1, $limit = 10)
    {

        //Fix applied in the context of task: https://app.asana.com/0/1202242137645712/1202965456314449/f

        //$escapedQuery = fulltext_search_term($q, true, false);
        $query = WebsiteObject::join('website_objects_search', 'website_objects_search.website_object_id', '=', 'website_objects.website_object_id')
            ->join('website_objects_lang', 'website_objects_lang.website_object_id', '=', 'website_objects.website_object_id')
            //->whereRaw("MATCH(website_objects_search.search_content) AGAINST (? IN BOOLEAN MODE)", [$q])
            ->where('website_objects_search.title', 'LIKE', '%' . $q . '%')
            ->where('website_objects_search.language_id', $lang)
            ->where('website_objects_lang.wo_language_id', $lang)
            ->where('website_objects.status', 'published')
            ->select('website_objects.*', 'website_objects_search.id', 'website_objects_search.title', 'website_objects_search.search_content', 'website_objects_search.url', 'website_objects_search.image', 'website_objects_lang.lang_uri', 'website_objects_lang.lang_slug');


        $total  = $query->count();
        $offset = ($pageNumber - 1) * $limit;


        $websiteObjectCollection = $query->offset($offset)
            //->orderByRaw("MATCH(website_objects_search.search_content) AGAINST (? IN BOOLEAN MODE) asc", [$q])
            ->limit($limit)
            ->get();


        return new LengthAwarePaginator($websiteObjectCollection, $total, $limit, $pageNumber);
    }
}
