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('parent_id')->where('parent_id', 0)->get(); return view('product::product.create', compact('categories')); } // *********************************************************save products ****************** public function store(ProductRequest $request) { /*foreach ($request->file('gallery_image') as $item) { echo '
';
            print_r($item);
            echo '
'; } die();*/ $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, 'ReleaseStatus' => $request->ReleaseStatus, 'price' => $request->price, 'sale_price' => $request->sale_price, 'type' => $request->type, 'status' => $request->status, 'discription' => $request->discription, 'creator_id' => auth()->user()->id ]; // \DB::enableQueryLog(); $product = Product::create($data); $product->categories()->sync($request->categories); // dd(\DB::getQueryLog()); if ($request->has('gallery_image')) { $file = $request->only('gallery_image', 'captionGallery', 'descriptionGallery'); $type = 'gallery_image'; $diskName = 'product'; $this->uploadGallery($file, $diskName, $product, $type); } if ($request->has('featured_image')) { $info = $request->only(['featureDescription', 'featureCaption']); $file = $request->file('featured_image'); $type = 'featured_image'; $diskName = 'product'; $this->uploadFeature($file, $diskName, $product, $type, $info); } $msg = 'ذخیره محصول با موفقیت انجام شد '; return redirect(route('products.edit', $product->id))->with('success', $msg); } // ******************************************************edit page product********************************************* public function edit(Product $product) { $categories = Category::where('parent_id', 0)->orderBy('title')->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), ]); // 'categories' => $request->categories, $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); if ($request->has('gallery_image')) { $file = $request->only('gallery_image', 'captionGallery', 'descriptionGallery'); $type = 'gallery_image'; $diskName = 'product'; $this->updateGallery($file, $diskName, $product, $type); } if ($request->has('featured_image')) { $info = $request->only(['featureDescription', 'featureCaption']); $file = $request->file('featured_image'); $type = 'featured_image'; $diskName = 'product'; $this->uploadFeature($file, $diskName, $product, $type, $info); } $msg = 'ویرایش محصول با موفقیت انجام شد '; return redirect(route('products.index'))->with('success', $msg); } //***************************** delete products***************************************** public function destroy(Product $product) { $product->delete(); { return back(); } } //****************upload images in the product************************ public function uploadFeature($file, $diskName, $product, $type,$info) { $fileExtension = $file->getClientOriginalExtension(); $fileMimeType = $file->getMimeType(); $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m'); $fileName = jdate(time())->format('Ymd') . '_' . $file->getClientOriginalName(); $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName); if (File::exists($filePath)) { $fileName = time() . '_' . $fileName; } $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName); $uploadData = [ 'name' => $fileName, 'path' => $upload, 'mime_type' => $fileMimeType, 'extension' => $fileExtension, 'type' => $type, 'descriptionImg' => $info['featureDescription'], 'caption' => $info['featureCaption'], ]; $uploaded = $product->uploads()->create($uploadData); } public function updateFeature($file, $diskName, $product, $type,$info) { $fileExtension = $file->getClientOriginalExtension(); $fileMimeType = $file->getMimeType(); $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m'); $fileName = jdate(time())->format('Ymd') . '_' . $file->getClientOriginalName(); $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName); if (File::exists($filePath)) { $fileName = time() . '_' . $fileName; } $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName); $uploadData = [ 'name' => $fileName, 'path' => $upload, 'mime_type' => $fileMimeType, 'extension' => $fileExtension, 'type' => $type, 'descriptionImg' => $info['featureDescription'], 'caption' => $info['featureCaption'], ]; $uploaded = $product->uploads()->update($uploadData); } //************************delete image in th product********************** public function destroyFile(Upload $upload) { $upload->delete(); $msg = 'حذف عکس محصول با موفقیت انجام شد '; session()->flash('image_deleted',$msg); return redirect()->back(); } public function uploadGallery($files, $diskName, $product, $type) { // dd($files); foreach ($files['gallery_image'] as $key => $file) { $fileExtension = $file->getClientOriginalExtension(); $fileMimeType = $file->getMimeType(); $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m'); $fileName = jdate(time())->format('Ymd') . '_' . $file->getClientOriginalName(); $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName); if (File::exists($filePath)) { $fileName = time() . '_' . $fileName; } $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName); $uploadData = [ 'name' => $fileName, 'path' => $upload, 'mime_type' => $fileMimeType, 'extension' => $fileExtension, 'type' => $type, 'descriptionImg' => $files['descriptionGallery'][$key], 'caption' => $files['captionGallery'][$key], ]; $uploaded = $product->uploads()->create($uploadData); } } public function updateGallery($files, $diskName, $product, $type) { // dd($files); foreach ($files['gallery_image'] as $key => $file) { $fileExtension = $file->getClientOriginalExtension(); $fileMimeType = $file->getMimeType(); $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m'); $fileName = jdate(time())->format('Ymd') . '_' . $file->getClientOriginalName(); $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName); if (File::exists($filePath)) { $fileName = time() . '_' . $fileName; } $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName); $uploadData = [ 'name' => $fileName, 'path' => $upload, 'mime_type' => $fileMimeType, 'extension' => $fileExtension, 'type' => $type, 'descriptionImg' => $files['descriptionGallery'][$key], 'caption' => $files['captionGallery'][$key], ]; $uploaded = $product->uploads()->update($uploadData); } } }