get(); $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')); } //**************************************************** page create products ***************** public function create() { $categories = Category::orderBy('id', 'DESC')->get(); return view('product::product.create', compact('categories')); } // *********************************************************save products ****************** public function store(ProductRequest $request) { $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, 'status' => $request->status, 'discription' => $request->discription, 'creator_id' => auth()->user()->id ]; $product = Product::create($data); $file = $request->file('photo'); // $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate('m'); $fileMime = $file->getClientMimeType(); $fileExtension = $file->getClientOriginalExtension(); $fileName = 'product_file'. time() . '_' . $file->getClientOriginalName(); // / $filePath = $file->storeAs('photos' . .$afterDiskRoot ,$fileName,'product'); $filePath = $file->storeAs('photos', $fileName , 'product'); if (file_exists($filePath)) { $fileName = 'product_file'. time() . '_' . $fileName; } $dataUpload = [ 'name' => $fileName, 'extension' => $fileExtension, 'path' => $filePath, 'mime_type' => $fileMime, 'uploadable_type' => 'Packages\Product\Models\Product', 'uploadable_id' => $product->id, ]; $product->categories()->sync($request->categories); $product->uploads()->create($dataUpload); $msg = 'ذخیره محصول با موفقیت انجام شد '; return redirect(route('products.edit', $product->id))->with('success', $msg); } // ******************************************************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(ProductRequest $request, Product $product, Upload $upload) { $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, 'status' => $request->status, 'discription' => $request->discription, 'creator_id' => auth()->user()->id ]; $product->update($data); $file = $request->file('photo'); $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate('m'); $diskName = 'product'; $fileMime = $file->getClientMimeType(); $fileExtension = $file->getClientOriginalExtension(); $fileName = 'product-file-' . '_' . $file->getClientOriginalName(); $filePath = $file->storeAs('photos', $fileName, 'product'); if (file_exists($filePath)) { $fileName = time() . '_' . $fileName; } $dataUpload = [ 'name' => $fileName, 'extension' => $fileExtension, 'path' => $filePath, 'mime_type' => $fileMime, 'uploadable_type' => 'Packages\Product\Models\Product', 'uploadable_id' => $product->id, ]; $product->categories()->sync($request->categories); $product->uploads()->update($dataUpload); $msg = 'ویرایش محصول با موفقیت انجام شد '; dd($request->all()); return redirect(route('products.index'),compact('upload'))->with('success', $msg); } //***************************** delete products***************************************** public function destroy(Product $product) { $product->delete(); { return back(); } } }