[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: Product.php
<?php namespace App\Models\Api; //use Illuminate\Database\Eloquent\Model; use App\Models\Product as Model; use App\Models\ProductOrder; use App\Models\ProductSelectedFilterOption; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class Product extends Model { public function getLabelAttribute() { if ($this->ordering and !empty($this->inventory) and $this->getAvailability() < 1) { return trans('update.out_of_stock'); } elseif (!$this->ordering and $this->getActiveDiscount()) { return trans('update.ordering_off'); } elseif ($this->getActiveDiscount()) { return trans('public.offer', ['off' => $this->getActiveDiscount()->percent]); } else { switch ($this->status) { case \App\Models\Product::$active: return trans('public.active'); case Product::$inactive: return trans('public.rejected'); case Product::$draft: return trans('public.draft'); case Product::$pending: return trans('public.waiting'); default: return null; } } } public function getWaitingOrdersAttribute() { return $this->productOrders->whereIn('status', [ProductOrder::$waitingDelivery, ProductOrder::$shipped])->count(); } public function canAddToCart($user) { } public function checkProductForSale($user) { if ($this->getAvailability() < 1) { return apiResponse2(0, 'not_availability', trans('update.product_not_availability')); } if ($this->creator_id == $user->id) { return apiResponse2(0, 'same_user', trans('update.cant_purchase_your_product')); } return 'ok'; } public function scopeHandleFilters($query) { $isRewardProducts = false; $request = \request(); $isFree = $request->get('free', null); $isFreeShipping = $request->get('free_shipping', null); $withDiscount = $request->get('discount', null); $sort = $request->get('sort', null); $type = $request->get('type', null); $options = $request->get('options', null); $categoryId = $request->get('cat', null); $filterOption = $request->get('filter_option', null); if (!empty($isFree) and $isFree == '1') { $query->where(function ($qu) { $qu->whereNull('price') ->orWhere('price', '0'); }); } if (!empty($isFreeShipping) and $isFreeShipping == '1') { $query->where(function ($qu) { $qu->whereNull('delivery_fee') ->orWhere('delivery_fee', '0'); }); } if (!empty($withDiscount) and $withDiscount == '1') { $query->whereHas('discounts', function ($query) { $query->where('status', 'active') ->where('start_date', '<', time()) ->where('end_date', '>', time()); }); } if (!empty($type) and count($type)) { $query->whereIn('type', $type); } if (!empty($options) and count($options)) { if (in_array('only_available', $options)) { $query->where(function ($query) { $query->where('unlimited_inventory', true) ->orWhereHas('productOrders', function ($query) { $query->havingRaw('products.inventory > sum(quantity)') ->whereNotNull('sale_id') ->whereNotIn('status', [ProductOrder::$canceled, ProductOrder::$pending]) ->groupBy('product_id'); }); }); } if (in_array('with_point', $options)) { $query->whereNotNull('point'); } } if (!empty($categoryId)) { $query->where('category_id', $categoryId); } if (!empty($filterOption) and is_array($filterOption)) { $productIdsFilterOptions = ProductSelectedFilterOption::whereIn('filter_option_id', $filterOption) ->pluck('product_id') ->toArray(); $productIdsFilterOptions = array_unique($productIdsFilterOptions); $query->whereIn('products.id', $productIdsFilterOptions); } if (!empty($sort)) { if ($sort == 'expensive') { if ($isRewardProducts) { $query->orderBy('point', 'desc'); } else { $query->orderBy('price', 'desc'); } } if ($sort == 'inexpensive') { if ($isRewardProducts) { $query->orderBy('point', 'asc'); } else { $query->orderBy('price', 'asc'); } } if ($sort == 'bestsellers') { $query->leftJoin('product_orders', function ($join) { $join->on('products.id', '=', 'product_orders.product_id') ->whereNotNull('product_orders.sale_id') ->whereNotIn('product_orders.status', [ProductOrder::$canceled, ProductOrder::$pending]); }) ->select('products.*', DB::raw('sum(product_orders.quantity) as salesCounts')) ->groupBy('product_orders.product_id') ->orderBy('salesCounts', 'desc'); } if ($sort == 'best_rates') { $query->leftJoin('product_reviews', function ($join) { $join->on('products.id', '=', 'product_reviews.product_id'); $join->where('product_reviews.status', 'active'); }) ->whereNotNull('rates') ->select('products.*', DB::raw('avg(rates) as rates')) ->groupBy('product_reviews.product_id') ->orderBy('rates', 'desc'); } } return $query; } public function getPrettySpecification() { return $this->selectedSpecifications->where('allow_selection', false) ->map(function ($selected) { if ($selected->type == 'textarea') { $value = $selected->value; } elseif (!empty($selected->selectedMultiValues)) { $value = $selected->selectedMultiValues->map(function ($multi) { return $multi->multiValue->title; }); } return [ 'title' => $selected->specification->title, 'type' => $selected->type, 'value' => $value ]; })->toArray(); } public function dde() { return $this->selectedSpecifications->where('allow_selection', true) ->where('type', 'multi_value')->map(function ($selectable) { return [ 'title' => $selectable->specification->title, 'values' => $selectable->selectedMultiValues->map(function ($multi) { return $multi->multiValue->title; }), // 'name' => $selectable->specification->createName(), ]; })->toArray(); } public function comments() { return $this->hasMany('App\Models\Api\Comment', 'product_id', 'id'); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.85 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285