105 lines
3.3 KiB
PHP
105 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace Sarga\API\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Sarga\API\Http\Resources\Catalog\Brand;
|
|
use Sarga\Brand\Repositories\BrandRepository;
|
|
use Illuminate\Database\Query\JoinClause;
|
|
use Sarga\Brand\Models\Brand as BrandModel;
|
|
|
|
class Brands extends \Webkul\RestApi\Http\Controllers\V1\Shop\ResourceController
|
|
{
|
|
protected $requestException = ['page', 'limit', 'pagination', 'sort', 'order', 'token','locale','search','category'];
|
|
|
|
/**
|
|
* Is resource authorized.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function isAuthorized()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Repository class name.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function repository()
|
|
{
|
|
return BrandRepository::class;
|
|
}
|
|
|
|
/**
|
|
* Resource class name.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function resource()
|
|
{
|
|
return Brand::class;
|
|
}
|
|
|
|
public function allResources(Request $request)
|
|
{
|
|
$query = $this->getRepositoryInstance()->scopeQuery(function ($query) use ($request) {
|
|
|
|
foreach ($request->except($this->requestException) as $input => $value) {
|
|
$query = $query->whereIn($input, array_map('trim', explode(',', $value)));
|
|
}
|
|
|
|
if($key = $request->input('search')){
|
|
$query = $query->where('name','like', '%'.$key.'%');
|
|
}
|
|
|
|
if($category = $request->input('category')){
|
|
$query = $query->rightJoin('category_brands','brands.id','=','category_brands.brand_id')
|
|
->where('category_brands.category_id',$category);
|
|
}
|
|
|
|
// if($brand = $request->input('brand'))
|
|
// {
|
|
// $query = $query->join('categories', 'category_brands.brand_id','=',$brand)
|
|
// ->where('category_brands.category_id',$brand);
|
|
// // ->select('categories', 'contacts.phone', 'orders.price');
|
|
|
|
// // $query = $query->join('category_brands', function (JoinClause $join) use($brand) {
|
|
// // $join->on($brand, '=', 'category_brands.brand_id')
|
|
// // ->where('categories.id', '=', 'category_brands.category_id');
|
|
// // });
|
|
// }
|
|
|
|
// if($brand = $request->input('brand')){
|
|
// // $query = $query->rightJoin('brands','brands.id','=','category_brands.brand_id')
|
|
// // ->where('categories.brand_id',$brand);
|
|
// $query = $query->with('category_brands')->where('id', $brand);
|
|
// }
|
|
|
|
if ($sort = $request->input('sort')) {
|
|
$query = $query->orderBy($sort, $request->input('order') ?? 'asc');
|
|
} else {
|
|
$query = $query->orderBy('position', 'desc')->orderBy('name', 'asc');
|
|
}
|
|
|
|
return $query;
|
|
});
|
|
|
|
if (is_null($request->input('pagination')) || $request->input('pagination')) {
|
|
$results = $query->paginate($request->input('limit') ?? 10);
|
|
} else {
|
|
$results = $query->get();
|
|
}
|
|
|
|
return $this->getResourceCollection($results);
|
|
}
|
|
|
|
|
|
public function getCategory(Request $request)
|
|
{
|
|
$data = BrandModel::where('id', $request->input('brandId'))->with(['categories'])->first();
|
|
|
|
return $data;
|
|
}
|
|
} |