<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Yajny\Models\Store;
use Yajny\Models\StoreCashback;

class CashbackCalculatorController extends Controller
{
    public function search()
    {
        $region = request('region');
        $lang = request('lang', 'ar');

        $storesQuery = Store::where('cb_status', true);

        if ($region)
            $storesQuery->whereJsonContains('region_code', $region);

        $search = request('search', null);
        if ($search && $search != '') {
            $storesQuery->where(DB::raw("LOWER(json_unquote(json_extract(`name`, '$.\"{$lang}\"')))"), 'LIKE', strtolower($search) . '%');
            $storesQuery->orderBy("name->{$lang}", 'ASC');
        } else {
            $storesQuery->selectRaw(Store::colSelect());
            $storesQuery->orderBy('clicks', 'DESC');
            $storesQuery->take(10);
        }

        return $storesQuery->get()->map(function ($item) {
            $categories = $item->store_cashback->map(function ($cat) {
                return StoreCashback::mapItems($cat);
            });

            return array_merge(Store::mapItems($item), ['categories' => $categories]);
        });
    }
}
