Server IP : 66.29.132.124 / Your IP : 3.133.127.131 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/Booking/Models/ |
Upload File : |
<?php namespace Modules\Booking\Models; use App\BaseModel; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Http\Request; use Modules\Core\Models\Terms; use Modules\Location\Models\Location; class Service extends BaseModel { use SoftDeletes; public $type = 'service'; public $allowType = [ 'hotel', 'space', 'tour', 'car', 'event', 'flight', 'boat', ]; protected $table = 'bravo_services'; protected $slugField = 'slug'; protected $slugFromField = 'title'; protected $fillable = [ 'title', 'location_id', 'category_id', 'address', 'map_lat', 'map_lng', 'is_featured', 'star_rate', 'price', 'sale_price', 'min_people', 'max_people', 'max_guests', 'review_score', 'min_day_before_booking', 'min_day_stays', 'locale', 'object_id', 'object_model', 'status' ]; public static function cloneService($model, $event) { try { if (!empty($model->type) and $model->type != 'service' and in_array($model->type, (new Service())->allowType)) { $service = self::where('object_model', $model->type)->where('object_id', $model->id)->first(); if (empty($service)) { $service = new Service(); } if (is_default_lang()) { $service->fill($model->attributes); $service->object_id = $model->id; $service->object_model = $model->type; $service->save(); } else { $getRecordRoot = $model->getRecordRoot; if (!empty($getRecordRoot)) { $service = self::where('object_model', $getRecordRoot->type)->where('object_id', $getRecordRoot->id)->first(); if (empty($service)) { $service = new Service(); $service->fill($getRecordRoot->attributes); $service->object_id = $getRecordRoot->id; $service->object_model = $getRecordRoot->type; $service->save(); } $serviceTranslation = new ServiceTranslation($model->attributes); $service->Translations()->save($serviceTranslation); } } } } catch (\Exception $e) { } } public static function deleteService($model) { try { if (!empty($model->type) and $model->type != 'service' and in_array($model->type, (new Service())->allowType)) { $service = self::where('object_model', $model->type)->where('object_id', $model->id)->first(); if (!empty($service)) { $a = $service->delete(); } } } catch (\Exception $e) { } } public static function restoreService($model) { try { if (!empty($model->type) and $model->type != 'service' and in_array($model->type, (new Service())->allowType)) { $service = self::withTrashed()->where('object_model', $model->type)->where('object_id', $model->id)->first(); if (!empty($service)) { $service->restore(); } } } catch (\Exception $e) { } } public static function search(Request $request) { $model_service = parent::query()->select("bravo_services.*"); $model_service->where("bravo_services.status", "publish"); if (!empty($location_id = $request->query('location_id'))) { $location = Location::query()->where('id', $location_id)->where("status","publish")->first(); if(!empty($location)){ $model_service->join('bravo_locations', function ($join) use ($location) { $join->on('bravo_locations.id', '=', 'bravo_services.location_id') ->where('bravo_locations._lft', '>=', $location->_lft) ->where('bravo_locations._rgt', '<=', $location->_rgt); }); } } if (!empty($price_range = $request->query('price_range'))) { $pri_from = explode(";", $price_range)[0]; $pri_to = explode(";", $price_range)[1]; $raw_sql_min_max = "( (IFNULL(bravo_services.sale_price,0) > 0 and bravo_services.sale_price >= ? ) OR (IFNULL(bravo_services.sale_price,0) <= 0 and bravo_services.price >= ? ) ) AND ( (IFNULL(bravo_services.sale_price,0) > 0 and bravo_services.sale_price <= ? ) OR (IFNULL(bravo_services.sale_price,0) <= 0 and bravo_services.price <= ? ) )"; $model_service->WhereRaw($raw_sql_min_max,[$pri_from,$pri_from,$pri_to,$pri_to]); } $review_scores = $request->query('review_score'); if (is_array($review_scores) && !empty($review_scores)) { $where_review_score = []; $params = []; foreach ($review_scores as $number){ $where_review_score[] = " ( bravo_services.review_score >= ? AND bravo_services.review_score <= ? ) "; $params[] = $number; $params[] = $number.'.9'; } $sql_where_review_score = " ( " . implode("OR", $where_review_score) . " ) "; $model_service->WhereRaw($sql_where_review_score,$params); } if(!empty( $service_name = $request->query("service_name") )){ if( setting_item('site_enable_multi_lang') && setting_item('site_locale') != app()->getLocale() ){ $model_service->leftJoin('bravo_service_translations', function ($join) { $join->on('bravo_services.id', '=', 'bravo_service_translations.origin_id'); }); $model_service->where('bravo_service_translations.title', 'LIKE', '%' . $service_name . '%'); }else{ $model_service->where('bravo_services.title', 'LIKE', '%' . $service_name . '%'); } } $orderby = $request->input("orderby"); switch ($orderby){ case "price_low_high": $raw_sql = "CASE WHEN IFNULL( bravo_services.sale_price, 0 ) > 0 THEN bravo_services.sale_price ELSE bravo_services.price END AS tmp_min_price"; $model_service->selectRaw($raw_sql); $model_service->orderBy("tmp_min_price", "asc"); break; case "price_high_low": $raw_sql = "CASE WHEN IFNULL( bravo_services.sale_price, 0 ) > 0 THEN bravo_services.sale_price ELSE bravo_services.price END AS tmp_min_price"; $model_service->selectRaw($raw_sql); $model_service->orderBy("tmp_min_price", "desc"); break; case "rate_high_low": $model_service->orderBy("review_score", "desc"); break; default: $model_service->orderBy("is_featured", "desc"); $model_service->orderBy("id", "desc"); } $model_service->groupBy("bravo_services.id"); if(!empty($request->query('limit'))){ $limit = $request->query('limit'); }else{ $limit = 9; } return $model_service->with(['translations'])->paginate($limit); } public function dataForApi($forSingle = false){ $service = $this->service; $data = $service->dataForApi(); return $data; } public function service() { $all = get_bookable_services(); if ($this->object_model and !empty($all[$this->object_model])) { return $this->hasOne($all[$this->object_model], 'id', 'object_id'); } return null; } }