Файловый менеджер - Редактировать - /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Controllers/Api/V1/User/ProductApiController.php
Назад
<?php namespace App\Http\Controllers\Api\V1\User; use App\Http\Controllers\Controller; use App\Http\Resources\User\ProductResource; use App\Http\Resources\User\ProductResourceWithAttributes; use App\Http\Resources\User\ProductResourceWithAttributesTest; use App\Http\Resources\User\VariationResource; use App\Models\Product; use App\Models\Variation; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; class ProductApiController extends Controller { public function index(Request $request) { $product_min = Product::where('status', 1)->min("price_from"); $product_max = Product::where('status', 1)->max("price_to"); $products = Product::active() ->published() ->when($category = $request->get('category'), function ($query) use ($category) { $query->where('category_id', $category); }) ->when($search = $request->get('search'), function ($query) use ($search) { $query->where('name', 'LIKE' , '%'.$search.'%'); }) ->when(isset($request->color_engraving), function ($query) use ($request) { $query->where('engraving', 1); $query->where('color_engraving', $request->get('color_engraving')); }) ->when($rating = $request->get('rating'), function ($query) use ($rating) { $query->whereHas('reviews', function ($query) use ($rating) { $query ->selectRaw('AVG(rating) AS avg_rating') ->groupBy('product_id') ->havingRaw('ROUND(AVG(rating)) = ?', [$rating]); }); }) ->when($color = $request->get('color'), function ($query) use ($color) { $query->whereHas('variations', function ($query) use ($color) { $query->where('variation_id', $color); }); }) ->when($dimension = $request->get('dimension'), function ($query) use ($dimension) { $query->whereHas('variations', function ($query) use ($dimension) { $query->where('variation_id', $dimension); }); }); if ((isset($request->min_price) && isset($request->max_price)) && ($request->min_price >= 0 && $request->max_price >= $request->min_price)) { $minPrice = $request->min_price; $maxPrice = $request->max_price; $products = $products->where(function ($query) use ($minPrice, $maxPrice) { /*$query->where('price_from', '>=', $minPrice) ->orWhere('price_to', '<=', $maxPrice);*/ $query->whereBetween('price_from', [$minPrice, $maxPrice]) ->orWhereBetween('price_to', [$minPrice, $maxPrice]); }); } $products = $products->orderBy('name')->paginate(20)->appends(request()->query()); ProductResource::withoutWrapping(); return ProductResource::collection($products)->additional([ 'product_min_price' => $product_min, 'product_max_price' => $product_max, ]); } public function show($product) { $product = Product::where('id', $product)->orWhere('slug', $product)->first(); if (!$product) return response()->json([ 'message' => "Record not found.", 'errors' => ["error" => ["Record not found."]] ], Response::HTTP_NOT_FOUND); return (new ProductResourceWithAttributes($product)); } public function show2($product) { $product = Product::where('id', $product)->orWhere('slug', $product)->first(); if (!$product) return response()->json([ 'message' => "Record not found.", 'errors' => ["error" => ["Record not found."]] ], Response::HTTP_NOT_FOUND); return (new ProductResourceWithAttributesTest($product)); } public function getColorVariations() { $colors = Variation::where('type', 'color')->orderBy('value')->get(); VariationResource::withoutWrapping(); return VariationResource::collection($colors); } public function getDimensionVariations() { $colors = Variation::where('type', 'dimension')->orderBy('value')->get(); VariationResource::withoutWrapping(); return VariationResource::collection($colors); } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка