Example #1
0
 /**
  * Save product info
  *
  * @param Illuminate\Http\Request $request
  *
  * @return type
  */
 public function ajaxSaveProduct(Request $request)
 {
     //Only accept ajax request
     if ($request->ajax() && $request->isMethod('POST')) {
         if (store() === null) {
             return pong(0, _t('not_found'), 404);
         }
         $store = store();
         $productId = (int) $request->get('id');
         if ($productId) {
             $product = $store->products->find($productId);
         } else {
             $product = new Product();
         }
         if ($product === null) {
             return pong(0, _t('not_found'), 404);
         }
         $rules = $this->_product->getRules();
         $messages = $this->_product->getMessages();
         if ($productId) {
             $rules = remove_rules($rules, 'product_image_1');
         }
         $validator = Validator::make($request->all(), $rules, $messages);
         $tempImages = [$request->get('product_image_1'), $request->get('product_image_2'), $request->get('product_image_3'), $request->get('product_image_4')];
         if ($validator->fails()) {
             return pong(0, $validator->messages(), is_null($product) ? 404 : 403);
         }
         /**
          *  1. Copy product images from temporary folder to product folder.
          *  2. Delete old product image(s).
          *  3. Save product.
          */
         try {
             // 1
             $images = $this->_copyTempProductImages($tempImages);
             // 2
             if ($productId) {
                 $this->_deleteOldImages($images, $product->images);
             }
             // 3
             $product->store_id = $store->id;
             $product->name = $request->get('name');
             $product->price = $request->get('price');
             $product->old_price = $request->get('old_price');
             $product->description = $request->get('description');
             $product->setImages($images);
             $product->save();
         } catch (Exception $ex) {
             return pong(0, _t('opp'), 500);
         }
         return pong(1, ['messages' => _t('saved_info'), 'data' => ['id' => $product->id, 'name' => $product->name, 'price' => product_price($product->price), 'old_price' => product_price($product->old_price), 'image' => ($i = $product->toImage()->image_1) !== null ? product_image($i->medium) : '']]);
     }
 }