Esempio n. 1
0
 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('/');
 }