get(); $draft = Draft::orderBy('id', 'DESC')->first(); $products = Product::query()->orderBy('id', 'DESC'); if (request()->has('productCategory') && request('productCategory') != '') $products = $products->whereHas('categories', function (Builder $query) { $query->whereRaw('id = ?', [request('productCategory')]); }); if (request()->has('productStatus') && request('productStatus') != '') $products = $products->whereRaw('status = ?', [request('productStatus')]); if (request()->has('productName') && request('productName') != '') $products = $products->whereRaw('title = ?', [request('productName')]); if (request()->has('creatorId') && request('creatorId') != '') $products = $products->whereHas('user', function (Builder $query) { $query->whereRaw('name= ?', [request('creatorId')]); }); $products = $products->paginate(); return view('product::index', compact('products', 'categories', 'draft')); } //**************************************************** page create products ***************** public function create(Request $request) { return view('product::product.create'); } // *********************************************************save products ****************** public function store(ProductRequest $request) { $data = [ 'title' => $request->title, 'slug' => $request->slug, 'ReleaseStatus' => $request->ReleaseStatus, 'type' => $request->type, 'discription' => $request->discription, 'creator_id' => auth()->user()->id, ]; $product = Product::create($data); $view = 'create'; if ($product->type === 'ساده'){ $view = 'saveProductStepTwo'; }elseif ($product->type ==='متغیر'){ $view = 'productStepVariable'; }elseif ($product->type === 'باندل'){ $view = 'productStepVariable'; } $msg = 'ذخیره محصول با موفقیت انجام شد '; return redirect()->route($view, $product->id)->with('success', $msg); } public function productStepTwo($id) { $product = $this->productChecker($id); if ($product != false){ $msg = 'ذخیره محصول با موفقیت انجام شد '; return view('product::product.simpleEditProduct', compact('product'))->with('success', $msg); }else{ return abort(419); } } public function productStepVariable(Request $request, $id) { $attributes = Attribute::orderBy('id')->where('use_in_veriation', 1)->get(); $attributables = \DB::table('attributables')->where('val_attribute', true)->get(); // dd($attributables->val_attribute); $product = $this->productChecker($id); if ($product != false){ $msg = 'ذخیره محصول با موفقیت انجام شد '; return view('product::product.variableProduct', compact('product', 'attributes', 'attributables'))->with('success', $msg); }else{ return abort(419); } } public function productStepThree(Request $request) { $product = $this->productChecker($request->product_id); if ($product != false){ $request->validate([ 'title' => 'required', 'slug' => 'required', 'ReleaseStatus' => 'required', 'discription' => 'required', 'sku' => 'required', 'status' => 'required', 'price' => 'required', 'sale_price' => 'required', ]); /** * update product */ $data = [ 'title' => $request->title, 'slug' => $request->slug, 'ReleaseStatus' => $request->ReleaseStatus, 'discription' => $request->discription, 'creator_id' => auth()->user()->id, 'sku' => $request->sku, 'status' => $request->status, 'price' => $request->price, 'sale_price' => $request->sale_price, ]; $product->update($data); $msg = 'ویرایش محصول با موفقیت انجام شد '; return redirect(route('products.index'))->with('success', $msg); }else{ return abort(419); } } public function productChecker($id) { $product = Product::where('id', $id)->where('creator_id', Auth::user()->id)->first(); if (!empty($product)){ return $product; }else{ return false; } } // ******************************************************edit page product********************************************* public function edit(Product $product) { $categories = Category::orderBy('id', 'DESC')->get(); return view('product::product.edit', compact('product', 'categories')); } // *******************************************update page product***************************************** public function update(ProductRequestEdit $request, Product $product) { $request->merge([ 'price' => preg_replace('/[^0-9]+/', '', $request->price), 'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price), ]); $data = [ 'title' => $request->title, 'slug' => $request->slug, 'sku' => $request->sku, 'price' => $request->price, 'sale_price' => $request->sale_price, 'type' => $request->type, 'ReleaseStatus' => $request->ReleaseStatus, 'status' => $request->status, 'discription' => $request->discription, 'creator_id' => auth()->user()->id, ]; $product->update($data); $product->categories()->sync($request->categories); $msg = 'ویرایش محصول با موفقیت انجام شد '; return redirect(route('products.index'))->with('success', $msg); } //***************************** delete products***************************************** public function destroy(Product $product) { $product->delete(); { return back(); } } //************************delete image in the product********************** public function destroyFile(Upload $upload) { $upload->delete(); $msg = 'حذف عکس محصول با موفقیت انجام شد '; session()->flash('image_deleted', $msg); return redirect()->back(); } // ****************************uploadGallery******************** public function uploadValAttribute(Request $request) { $attributes=Attribute::orderBy('title')->get(); $productID = $request->productID; // dd( [$request->val_attribute]); $product = Product::where('id', $productID)->first(); $attributes = []; foreach ( $request->val_attribute as $attr_id => $values ){ $attributes[ $attr_id ] = ['val_attribute' => $values]; } // dd($attributes); $product->attributes()->sync($attributes); //dd($attributesd); } }