public function editProduct(Request $request) { $productId = $request->input('id'); $vendorId = \Session::get(config('app.session_key_vendor')); $action = $request->input('action'); if (isset($vendorId)) { $uploader = new UploadHandler(); if ($action === 'DELETE') { $product = $this->dataAccess->getProductByIdVendor($productId, $vendorId, ['product_image']); if (isset($product)) { $uploader->removeProductAsset($product->product_image); $rowsAffected = $this->dataAccess->deleteProduct($productId, $vendorId); return redirect('/product/vendor'); } } else { // Now validate user product $productValidator = $this->productValidator($request->all()); if ($productValidator->fails()) { $this->throwValidationException($request, $productValidator); } $data = $request->all(); if (is_null($request->input('allergens'))) { $data['allergens'] = array(); } try { // Upload product file if present if ($request->hasFile('product_image') && $request->file('product_image')->isValid() && $uploader->isImage($request->file('product_image'))) { $newFilename = $uploader->uploadProductAsset($request->file('product_image')); $data['product_image'] = $newFilename; } $product = $this->dataAccess->upsertProduct($productId, $vendorId, $data); // Update categories // Update cache entry $this->updateProductCache($product, 'UPDATE'); return redirect('product/detail/' . $product->id)->with('successMessage', trans('messages.product_update_success')); } catch (\Exception $ex) { // Clean up uploaded image if needed if (isset($data['product_image'])) { $uploader->removeProductAsset($newFilename); } } } } return redirect('/'); }