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) { $categories = Category::orderBy('parent_id')->where('parent_id', 0)->get(); $uploads = Upload::orderBy('id')->get()->first(); if (!$request->has('draft_id')) { $draft = new Draft(); $draft->object_type = 'Packages\Product\Draft'; $draft->delete(); $draft->save(); return redirect()->route('products.create', ['draft_id' => $draft->id]); } else { $draft = Draft::find($request->draft_id); if (is_null($draft)) { return redirect()->route('products.create'); } } $args = [ 'draft' => $draft ]; $product= Product:: orderBy('id', 'DESC'); return view('product::product.create', $args, compact('categories', 'product', 'uploads')); } // *********************************************************save products ****************** public function store(ProductRequest $request) { // dd($request->all()); $request->merge([ 'price' => preg_replace('/[^0-9]+/', '', $request->price), 'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price), ]); if (!$request->has('draft_id')) { return abort(403, 'دسترسی به این صفحه ممکن نیست ؛ لطفا مجددا تلاش کنید.'); } $draft = Draft::findOrFail($request->draft_id); // $info = $request->only(['featureDescription', 'featureCaption']); $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, // 'descriptionImg' => $request->featureDescription, // 'caption' => $request->featureCaption, ]; // if( $draft->attachments->count() == 0 ){ // return redirect()->back() // ->withErrors( ['error_message' => 'حتما باید یک فایل آپلود شود.'] ) // ->withInput( $request->all() ); // } // dd($draft->attachments->count() == 0); $product = Product::create($data); $product->categories()->sync($request->categories); Upload::where('parent_type', 'Packages\Product')->where('uploadable_id', $draft->id)->where('uploadable_id', $draft->id) ->update(['parent_type' => 'image\Product', 'uploadable_id' => $product->id]); $draft->delete(); // $uploaded = Upload::create(); $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), ]); $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, ]; 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->updateFeature($file, $diskName, $product, $type, $info); } $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(); } } //****************upload images in the product************************ public function uploadFeature(Request $request) { if ($request->has('featured_image')) { $info = $request->only(['featureDescription', 'featureCaption']); $file = $request->file('featured_image'); $type = 'featured_image'; $diskName = 'product'; $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; } $draft = Draft::orderBy('id', 'Desc')->get()->first(); $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName); $uploadData = [ 'name' => $fileName, 'path' => $upload, 'mime_type' => $fileMimeType, 'extension' => $fileExtension, 'parent_type' => 'packages\product', 'uploadable_type' => 'Packages\Product\Models\Product', 'uploadable_id' => $draft->id, 'type' => $type, 'descriptionImg' => $info['featureDescription'], 'caption' => $info['featureCaption'], ]; $uploads = Upload::where('type', $type)->where('uploadable_id', $draft->id)->first(); if (empty($uploads)) { $uploaded = Upload::create($uploadData); } else { $uploaded = $uploads->update($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 the product********************** public function destroyFile(Upload $upload) { $upload->delete(); $msg = 'حذف عکس محصول با موفقیت انجام شد '; session()->flash('image_deleted', $msg); return redirect()->back(); } // ****************************uploadGallery******************** public function uploadGallery(Request $request) { if ($request->has('gallery_image')) { $files = $request->only('gallery_image', 'captionGallery', 'descriptionGallery'); $type = 'gallery_image'; $diskName = 'product'; // 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; } $draft = Draft::orderBy('id', 'Desc')->get()->first(); $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName); $uploadData = [ 'name' => $fileName, 'path' => $upload, 'mime_type' => $fileMimeType, 'extension' => $fileExtension, 'parent_type' => 'packages\product', 'uploadable_type' => 'Packages\Product\Models\Product', 'uploadable_id' => $draft->id, 'type' => $type, 'descriptionImg' => $files['descriptionGallery'][$key], 'caption' => $files['captionGallery'][$key], ]; // dd($uploadData); // $uploaded = Upload::where('uploadable_id', $draft->id)->update($uploadData); $uploaded = Upload::create($uploadData); dd($uploaded); } } } public function updateGallery($files, $diskName, $product, $type) { 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); } } }