ok
Direktori : /home2/selectio/www/limpiar.in.net/app/Http/Controllers/Api/V2/ |
Current File : //home2/selectio/www/limpiar.in.net/app/Http/Controllers/Api/V2/SearchSuggestionController.php |
<?php namespace App\Http\Controllers\Api\V2; use App\Models\Search; use App\Models\Product; use App\Models\Brand; use App\Models\Shop; use Illuminate\Http\Request; class SearchSuggestionController extends Controller { public function getList(Request $request) { $query_key = $request->query_key; $type = $request->type; $search_query = Search::select('id', 'query', 'count'); if ($query_key != "") { $search_query->where('query', 'like', "%{$query_key}%"); } $searches = $search_query->orderBy('count', 'desc')->limit(10)->get(); if ($type == "product") { $product_query = Product::query(); if ($query_key != "") { $product_query->where(function ($query) use ($query_key) { foreach (explode(' ', trim($query_key)) as $word) { $query->where('name', 'like', '%'.$word.'%')->orWhere('tags', 'like', '%'.$word.'%')->orWhereHas('product_translations', function($query) use ($word){ $query->where('name', 'like', '%'.$word.'%'); }); } }); } $products = filter_products($product_query)->limit(3)->get(); } if ($type == "brands") { $brand_query = Brand::query(); if ($query_key != "") { $brand_query->where('name', 'like', "%$query_key%"); } $brands = $brand_query->limit(3)->get(); } if ($type == "sellers") { $shop_query = Shop::query(); if ($query_key != "") { $shop_query->where('name', 'like', "%$query_key%"); } $shops = $shop_query->limit(3)->get(); } $items = []; //shop push if ($type == "sellers" && !empty($shops)) { foreach ($shops as $shop) { $item = []; $item['id'] = $shop->id; $item['query'] = $shop->name; $item['count'] = 0; $item['type'] = "shop"; $item['type_string'] = "Shop"; $items[] = $item; } } //brand push if ($type == "brands" && !empty($brands)) { foreach ($brands as $brand) { $item = []; $item['id'] = $brand->id; $item['query'] = $brand->name; $item['count'] = 0; $item['type'] = "brand"; $item['type_string'] = "Brand"; $items[] = $item; } } //product push if ($type == "product" && !empty($products)) { foreach ($products as $product) { $item = []; $item['id'] = $product->id; $item['query'] = $product->name; $item['count'] = 0; $item['type'] = "product"; $item['type_string'] = "Product"; $items[] = $item; } } //search push if (!empty($searches)) { foreach ($searches as $search) { $item = []; $item['id'] = $search->id; $item['query'] = $search->query; $item['count'] = intval($search->count); $item['type'] = "search"; $item['type_string'] = "Search"; $items[] = $item; } } return $items; // should return a valid json of search list; } }