🚀 Hostinger Optimized
🖥️ Server: LiteSpeed
💻 System: Linux s20058.bom1.stableserver.net 5.14.0-611.55.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 19 15:19:29 EDT 2026 x86_64
👤 User: skhata (1324)
🐘 PHP: 8.4.20
🚫 Disabled: ✨ NONE

💻 Terminal

📁 /home/skhata/chandrasons.com/public
$

📄 SearchController.php

📁 Path: /home/skhata/new.chandrapharma.com/app/Modules/Search/Controllers/SearchController.php
📊 Size: 1.89 KB
🔒 Perm: 0644
📝 MIME: text/x-php
<?php

namespace App\Modules\Search\Controllers;

use App\Http\Controllers\Controller;
use App\Modules\Catalog\Concerns\AppliesProductFilters;
use App\Modules\Catalog\Models\Product;
use App\Modules\Search\Services\SearchService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

class SearchController extends Controller
{
    use AppliesProductFilters;

    public function __construct(private readonly SearchService $searchService) {}

    /**
     * Full-text product search page — uses Scout (TNTSearch / Meilisearch).
     * Falls back to SQL LIKE when the query is empty so the page still shows all products.
     */
    public function index(Request $request)
    {
        $q = trim($request->get('q', ''));

        if ($q === '') {
            // No query — show all active products (browse mode), same
            // sidebar filters as every other listing page.
            $query = Product::active()->with(['vendor', 'primaryImage', 'images', 'category', 'media']);
            $this->applyProductFilters($query, $request);
            $products = $query->paginate(24)->withQueryString();
        } else {
            $products = $this->searchService->searchProducts($q, $request);
        }

        $categories            = $this->filterSidebarCategories();
        $therapeuticCategories = $this->filterSidebarTherapeuticCategories();

        return view('search.index', compact('products', 'q', 'categories', 'therapeuticCategories'));
    }

    /**
     * Autocomplete endpoint — returns up to 8 suggestions as JSON.
     * Called by the storefront search bar via fetch/axios.
     */
    public function autocomplete(Request $request): JsonResponse
    {
        $q = trim($request->get('q', ''));

        if (strlen($q) < 2) {
            return response()->json([]);
        }

        $results = $this->searchService->autocomplete($q);

        return response()->json($results);
    }
}
← Back📥 Raw✏️ Edit🔒 Chmod
✨ File Manager Magic ✨