guard = request()->has('token') ? 'api' : 'customer'; $this->_config = request('_config'); if (isset($this->_config['authorization_required']) && $this->_config['authorization_required']) { auth()->setDefaultDriver($this->guard); $this->middleware('auth:' . $this->guard); } $this->repository = app($this->_config['repository']); } /** * Returns a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $query = $this->repository->scopeQuery(function($query) { foreach (request()->except(['page', 'limit', 'pagination', 'sort', 'order', 'token']) as $input => $value) { $query = $query->whereIn($input, array_map('trim', explode(',', $value))); } if ($sort = request()->input('sort')) { $query = $query->orderBy($sort, request()->input('order') ?? 'desc'); } else { $query = $query->orderBy('id', 'desc'); } return $query; }); if (is_null(request()->input('pagination')) || request()->input('pagination')) { $results = $query->paginate(request()->input('limit') ?? 10); } else { $results = $query->get(); } return $this->_config['resource']::collection($results); } /** * Returns a individual resource. * * @param int $id * @return \Illuminate\Http\Response */ public function get($id) { return new $this->_config['resource']( $this->repository->findOrFail($id) ); } /** * Delete's a individual resource. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $wishlistProduct = $this->repository->findOrFail($id); $this->repository->delete($id); return response()->json([ 'message' => 'Item removed successfully.', ]); } }