HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/ai.naniguide.com/app/Http/Controllers/ProductController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use App\Model\MailList;
use App\Model\EmailVerificationServer;
use App\Events\MailListSubscription;
use App\Model\Setting;
use App\Model\Customer;
use App\Model\Product;
use App\Model\Source;

class ProductController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        return view('products.index');
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function listing(Request $request)
    {
        // search
        $products = $request->user()->customer->local()->products()
            ->search($request->keyword);

        // filter
        if ($request->source_uid) {
            $products = $products->filter('source_id', Source::findByUid($request->source_uid)->id);
        }

        // order + pagination
        $products = $products->orderBy($request->sort_order, $request->sort_direction)
            ->paginate($request->per_page);

        // view
        $view = $request->view ? $request->view : 'grid';

        return view('products._list_' . $view, [
            'products' => $products,
        ]);
    }

    public function widgetProductList(Request $request)
    {
        return Product::generateWidgetProductListHtmlContent($request->all());
    }

    public function widgetProductOptions(Request $request)
    {
        $results = Product::search($request->keyword)->paginate($request->per_page)
            ->map(function ($item, $key) {
                return ['text' => $item->title, 'id' => $item->uid];
            })->toArray();

        $json = '{
            "items": ' .json_encode($results). ',
            "more": ' . (empty($results) ? 'false' : 'true') . '
        }';

        return $json;
    }

    public function widgetProduct(Request $request)
    {
        return Product::generateWidgetProductHtmlContent($request->all());
    }
}