⚝
One Hat Cyber Team
⚝
Your IP:
160.79.111.166
Server IP:
162.254.39.145
Server:
Linux premium289.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
Server Software:
LiteSpeed
PHP Version:
8.2.28
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
favoaysf
/
www
/
app
/
Http
/
Controllers
/
Front
/
View File Name :
CatalogController.php
<?php namespace App\Http\Controllers\Front; use Illuminate\{ Http\Request, }; use App\{ Models\Item, Models\Category, Http\Controllers\Controller, }; use App\Helpers\PriceHelper; use App\Models\Attribute; use App\Models\AttributeOption; use App\Models\Brand; use App\Models\ChieldCategory; use App\Models\Setting; use App\Models\Subcategory; use Illuminate\Support\Facades\Session; class CatalogController extends Controller { public function __construct() { $this->middleware('localize'); } public function index(Request $request) { // attribute search $attr_item_ids = []; if($request->attribute){ $attrubutes_get = Attribute::where('name',$request->attribute)->get(); foreach($attrubutes_get as $attr_item_id){ $attr_item_ids[] = $attr_item_id->item_id; } } $option_attr_ids = []; if($request->option){ $option_get = AttributeOption::whereIn('name',explode(',',$request->option))->get(); foreach($option_get as $option_attr_id){ $option_attr_ids[] = $option_attr_id->attribute_id; } } $option_wise_item_ids = []; foreach(Attribute::whereIn('id',$option_attr_ids)->get() as $attr_item_id){ $option_wise_item_ids[] = $attr_item_id->item_id; } $setting = Setting::first(); $sorting = $request->has('sorting') ? ( !empty($request->sorting) ? $request->sorting : null ) : null; $new = $request->has('new') ? ( !empty($request->new) ? 1 : null ) : null; $feature = $request->has('quick_filter') ? ( !empty($request->quick_filter == 'feature') ? 1 : null ) : null; $top = $request->has('quick_filter') ? ( !empty($request->quick_filter == 'top') ? 1 : null ) : null; $best = $request->has('quick_filter') ? ( !empty($request->quick_filter == 'best') ? 1 : null ) : null; $new = $request->has('quick_filter') ? ( !empty($request->quick_filter == 'new') ? 1 : null ) : null; $brand = $request->has('brand') ? ( !empty($request->brand) ? Brand::whereSlug($request->brand)->firstOrFail() : null ) : null; $search = $request->has('search') ? ( !empty($request->search) ? $request->search : null ) : null; $category = $request->has('category') ? ( !empty($request->category) ? Category::whereSlug($request->category)->firstOrFail() : null ) : null; $subcategory = $request->has('subcategory') ? ( !empty($request->subcategory) ? Subcategory::whereSlug($request->subcategory)->firstOrFail() : null ) : null; $childcategory = $request->has('childcategory') ? ( !empty($request->childcategory) ? ChieldCategory::where('slug',$request->childcategory)->first() : null ) : null; $minPrice = $request->has('minPrice') ? ( !empty($request->minPrice) ? PriceHelper::convertPrice($request->minPrice) : null ) : null; $maxPrice = $request->has('maxPrice') ? ( !empty($request->maxPrice) ? PriceHelper::convertPrice($request->maxPrice) : null ) : null; $tag = $request->has('tag') ? ( !empty($request->tag) ? $request->tag : null ) : null; $items = Item::with('category') ->when($category, function ($query, $category) { return $query->where('category_id', $category->id); }) ->when($subcategory, function ($query, $subcategory) { return $query->where('subcategory_id', $subcategory->id); }) ->when($childcategory, function ($query, $childcategory) { return $query->where('childcategory_id', $childcategory->id); }) ->when($feature, function ($query) { return $query->whereIsType('feature'); }) ->when($tag, function ($query, $tag) { return $query->where('tags', 'like', '%' . $tag . '%'); }) ->when($new, function ($query) { return $query->orderby('id','desc'); }) ->when($top, function ($query) { return $query->whereIsType('top'); }) ->when($best, function ($query) { return $query->whereIsType('best'); }) ->when($new, function ($query) { return $query->whereIsType('new'); }) ->when($brand, function ($query, $brand) { return $query->where('brand_id', $brand->id); }) ->when($search, function ($query, $search) { return $query->whereStatus(1)->where('name', 'like', '%' . $search . '%')->orwhere('name', 'like', '%' . $search . '%'); }) ->when($minPrice, function($query, $minPrice) { return $query->where('discount_price', '>=', $minPrice); }) ->when($maxPrice, function($query, $maxPrice) { return $query->where('discount_price', '<=', $maxPrice); }) ->when($sorting, function($query, $sorting) { if($sorting == 'low_to_high'){ return $query->orderby('discount_price','asc'); }else{ return $query->orderby('discount_price','desc'); } }) ->when($attr_item_ids, function($query, $attr_item_ids) { return $query->whereIn('id',$attr_item_ids); }) ->when($option_wise_item_ids, function($query, $option_wise_item_ids) { return $query->whereIn('id',$option_wise_item_ids); }) ->where('status',1) ->orderby('id','desc')->paginate($setting->view_product); $attrubutes_check =[]; $options = AttributeOption::groupby('name')->select('attribute_id','name','id','keyword')->get(); foreach($options as $option){ if(!in_array(Attribute::withCount('options')->findOrFail($option->attribute_id)->keyword,$attrubutes_check)){ $attrubutes_check[] = Attribute::withCount('options')->findOrFail($option->attribute_id)->keyword; } } $attrubutes = []; foreach($attrubutes_check as $attr_new_get){ $attrubutes[] = Attribute::whereKeyword($attr_new_get)->first(); } $blade = 'front.catalog.index'; if($request->view_check){ Session::put('view_catalog',$request->view_check); } if(Session::has('view_catalog')){ $checkType = Session::get('view_catalog'); $name_string_count = 55; }else{ Session::put('view_catalog','grid'); $checkType = Session::get('view_catalog'); $name_string_count = 38; } if($request->ajax()) $blade = 'front.catalog.catalog'; return view($blade,[ 'attrubutes' => $attrubutes, 'options' => $options, 'brand' => $brand, 'brand' => $brand, 'brand' => $brand, 'items' => $items, 'name_string_count' => $name_string_count, 'category' => $category, 'subcategory' => $subcategory, 'childcategory' => $childcategory, 'checkType' => $checkType, 'brands' => Brand::withCount('items')->whereStatus(1)->get(), 'categories' => Category::whereStatus(1)->orderby('serial','asc')->withCount(['items' => function($query) { $query->where('status',1); }])->get(), ]); } public function viewType($type) { Session::put('view_catalog',$type); return response()->json($type); } public function suggestSearch(Request $request) { $category = null; if($request->category){ $category = Category::whereSlug($request->category)->first(); } $search = $request->search; $items = Item::whereStatus(1) ->when($search, function ($query, $search) { return $query->where('name', 'like', '%' . $search . '%')->orderby('id','desc')->take(10); }) ->when($category, function ($query, $category) { return $query->where('category_id', $category->id); }) ->get(); return view('includes.search_suggest',compact('items')); } }