products = $product; $this->compilation = $compilation; $this->categories = $category; } /** * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * @throws \Illuminate\Auth\Access\AuthorizationException */ public function index() { $this->authorize('view', 'compilations'); $compilations = Compilation::orderBy('position', 'asc')->get(); return view('dashboard.compilations.index', compact('compilations')); } // public function store(StoreRequest $request) // { // if ($request->isMethod('get')) { // $this->authorize('create', 'compilations'); // //// $this->authorize('content-manager'); // $categories = $this->categories->where('parent_id', null)->get(); // return view('dashboard.compilations.store', compact('categories')); // } // // $this->dispatchSync(new StoreJob($request)); // // $this->success(trans('admin.messages.created')); // return response()->json([ // 'status' => true // ]); // } /** * @param Compilation $compilation * @param UpdateRequest $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View * @throws \Illuminate\Auth\Access\AuthorizationException */ public function update(Compilation $compilation, UpdateRequest $request) { if ($request->isMethod('get')) { // $this->authorize('content-manager'); $compilation->loadMissing(['products:id,name,poster']); $this->authorize('update', 'compilations'); foreach ($compilation->products as $product) { $product->poster = '/'. $product->poster; $product->name = $product->name['ru']; } $categories = $this->categories->where('parent_id', false)->get(); return view('dashboard.compilations.update', compact('compilation', 'categories')); } $this->dispatchSync(new UpdateJob($request, $compilation)); $this->info(trans('admin.messages.updated')); return response()->json([ 'status' => true ]); } /** * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function search(Request $request) { $query = $request->name; $product = $this->products->published()->where('name->ru', 'like', $query . '%')->get()->map(function ($product) { return [ 'id' => $product->id, 'poster' => '/' . $product->poster, 'name' => $product->name['ru'] ]; }); return response()->json([ 'status' => true, 'products' => $product ]); } /** * @param Compilation $compilation * @return \Illuminate\Http\RedirectResponse * @throws \Exception */ public function delete(Compilation $compilation) { $this->authorize('delete', 'compilations'); $compilation->delete(); $this->info(trans('admin.messages.updated')); return redirect()->back(); } }