/** * 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) : '']]); } }