Server IP : 66.29.132.124 / Your IP : 3.133.153.232 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/book24.ng/modules/Car/Blocks/ |
Upload File : |
<?php namespace Modules\Car\Blocks; use Modules\Template\Blocks\BaseBlock; use Modules\Car\Models\Car; use Modules\Location\Models\Location; class ListCar extends BaseBlock { function __construct() { $this->setOptions([ 'settings' => [ [ 'id' => 'title', 'type' => 'input', 'inputType' => 'text', 'label' => __('Title') ], [ 'id' => 'desc', 'type' => 'input', 'inputType' => 'text', 'label' => __('Desc') ], [ 'id' => 'number', 'type' => 'input', 'inputType' => 'number', 'label' => __('Number Item') ], [ 'id' => 'style', 'type' => 'radios', 'label' => __('Style'), 'values' => [ [ 'value' => 'normal', 'name' => __("Normal") ], [ 'value' => 'carousel', 'name' => __("Slider Carousel") ] ] ], [ 'id' => 'location_id', 'type' => 'select2', 'label' => __('Filter by Location'), 'select2' => [ 'ajax' => [ 'url' => route('location.admin.getForSelect2'), 'dataType' => 'json' ], 'width' => '100%', 'allowClear' => 'true', 'placeholder' => __('-- Select --') ], 'pre_selected'=> route('location.admin.getForSelect2',['pre_selected'=>1]) ], [ 'id' => 'order', 'type' => 'radios', 'label' => __('Order'), 'values' => [ [ 'value' => 'id', 'name' => __("Date Create") ], [ 'value' => 'title', 'name' => __("Title") ], ] ], [ 'id' => 'order_by', 'type' => 'radios', 'label' => __('Order By'), 'values' => [ [ 'value' => 'asc', 'name' => __("ASC") ], [ 'value' => 'desc', 'name' => __("DESC") ], ] ], [ 'type'=> "checkbox", 'label'=>__("Only featured items?"), 'id'=> "is_featured", 'default'=>true ], [ 'id' => 'custom_ids', 'type' => 'select2', 'label' => __('List by IDs'), 'select2' => [ 'ajax' => [ 'url' => route('car.admin.getForSelect2'), 'dataType' => 'json' ], 'width' => '100%', 'multiple' => "true", 'placeholder' => __('-- Select --') ], 'pre_selected' => route('car.admin.getForSelect2', [ 'pre_selected' => 1 ]) ], ], 'category'=>__("Service Car") ]); } public function getName() { return __('Car: List Items'); } public function content($model = []) { $list = $this->query($model); $data = [ 'rows' => $list, 'style_list' => $model['style'], 'title' => $model['title'], 'desc' => $model['desc'], ]; return view('Car::frontend.blocks.list-car.index', $data); } public function contentAPI($model = []){ $rows = $this->query($model); $model['data']= $rows->map(function($row){ return $row->dataForApi(); }); return $model; } public function query($model){ $model_car = Car::select("bravo_cars.*")->with(['location','translations','hasWishList']); if(empty($model['order'])) $model['order'] = "id"; if(empty($model['order_by'])) $model['order_by'] = "desc"; if(empty($model['number'])) $model['number'] = 5; if (!empty($model['location_id'])) { $location = Location::where('id', $model['location_id'])->where("status","publish")->first(); if(!empty($location)){ $model_car->join('bravo_locations', function ($join) use ($location) { $join->on('bravo_locations.id', '=', 'bravo_cars.location_id') ->where('bravo_locations._lft', '>=', $location->_lft) ->where('bravo_locations._rgt', '<=', $location->_rgt); }); } } if(!empty($model['is_featured'])) { $model_car->where('bravo_events.is_featured',1); } if (!empty($model['custom_ids'])) { $model_car->whereIn("bravo_events.id", $model['custom_ids']); } $model_car->orderBy("bravo_cars.".$model['order'], $model['order_by']); $model_car->where("bravo_cars.status", "publish"); $model_car->with('location'); $model_car->groupBy("bravo_cars.id"); return $model_car->limit($model['number'])->get(); } }