/**
  * Update the specified resource in storage.
  * @param ProductFormRequest $request
  * @param $id
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function update(ProductFormRequest $request, $id)
 {
     if ($this->product->updateById($id, $request->all())) {
         flash()->success('Product has been updated');
         return response()->json(array('success' => true, 'msg' => 'product updated'), 201);
     }
     return response()->json(array('success' => false, 'msg' => 'product not updated'), 422);
 }
 public function updateProduct($id, ProductFormRequest $request)
 {
     $product = Product::find($id);
     $product_name = $request->input('product_name');
     $type = $request->input('type');
     $brand = $request->input('brand');
     $price = $request->input('price');
     $sale_price = $request->input('sale_price');
     $quantity = $request->input('quantity');
     $product_info = $request->input('product_info');
     $short_description = $request->input('short_description');
     $description = $request->input('description');
     $image1 = $request->file('image1');
     $image2 = $request->file('image2');
     $image3 = $request->file('image3');
     $thumbnail1 = $request->file('thumbnail1');
     $thumbnail2 = $request->file('thumbnail2');
     $thumbnail3 = $request->file('thumbnail3');
     //Let's update database
     $product->update(['product_name' => $product_name, 'type_id' => $type, 'brand_id' => $brand, 'price' => $price, 'sale_price' => $sale_price, 'quantity' => $quantity, 'product_info' => $product_info, 'short_description' => $short_description, 'description' => $description, 'image1' => $image1->getClientOriginalName(), 'image2' => $image2->getClientOriginalName(), 'image3' => $image3->getClientOriginalName(), 'thumbnail1' => $thumbnail1->getClientOriginalName(), 'thumbnail2' => $thumbnail2->getClientOriginalName(), 'thumbnail3' => $thumbnail3->getClientOriginalName()]);
     $image1->move('public/images/product_images', $image1->getClientOriginalName());
     $image2->move('public/images/product_images', $image2->getClientOriginalName());
     $image3->move('public/images/product_images', $image3->getClientOriginalName());
     $thumbnail1->move('public/images/product_images', $thumbnail1->getClientOriginalName());
     $thumbnail2->move('public/images/product_images', $thumbnail2->getClientOriginalName());
     $thumbnail3->move('public/images/product_images', $thumbnail3->getClientOriginalName());
     return redirect()->route('admin.productManagement');
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(ProductFormRequest $request, $id)
 {
     $product = Product::findOrFail($id);
     $product->update($request->all());
     // gestion du champ date : // 02-01-2016 (vue) => 2016-01-02 (bdd)
     $t = Input::get('published_at');
     // string
     $time = Carbon::createFromFormat('d-m-Y', $t)->toDateTimeString();
     $product->published_at = $time;
     // gestion du checkbox boolean 'en ligne?' :
     $product->status = empty($request->input('status')) ? 0 : 1;
     // gestion de l'extrait :
     $content = Input::get('content');
     $contentReduct = substr($content, 0, 40) . '...';
     $product->abstract = $contentReduct;
     $product->save();
     // envoi des tags a la bdd :
     if (!empty($request->input('tags'))) {
         $product->tags()->sync($request->get('tags'));
     }
     if (Input::hasFile('image')) {
         $destinationPath1 = 'uploads/main/';
         $destinationPath2 = 'uploads/preview/';
         $destinationPath3 = 'uploads/mini/';
         $extension = Input::file('image')->getClientOriginalExtension();
         $fileName1 = Str::random(10) . Carbon::now()->timestamp . '.' . $extension;
         $fileName2 = Str::random(10) . Carbon::now()->timestamp . '.' . $extension;
         $fileName3 = Str::random(10) . Carbon::now()->timestamp . '.' . $extension;
         \Intervention\Image\Facades\Image::make(Input::file('image')->getRealPath())->fit(970, 450)->save($destinationPath1 . $fileName1)->fit(550, 375)->save($destinationPath2 . $fileName2)->resize(100, null, function ($constraint) {
             $constraint->aspectRatio();
         })->save($destinationPath3 . $fileName3);
         // on insere un champ 'uri' + 'uri_preview' dans la bdd 'images' :
         $image = Image::create($request->all());
         $image->uri = $fileName1;
         $image->uri_preview = $fileName2;
         $image->uri_mini = $fileName3;
         $image->status = 1;
         // 1 pour validé
         $image->save();
         // on insere un champ 'id' dans la bdd 'posts' :
         $image_id = $image->id;
         $product->image_id = $image_id;
         $product->save();
     }
     return redirect(route('admin.products.edit', $id))->with('message', 'Le produit a bien été modifié !');
 }