/**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Requests\Product $request, $id)
 {
     try {
         DB::beginTransaction();
         $product = Product::findOrFail($id);
         $product->name = $request->input('name');
         $product->model = $request->input('model');
         if ($request->hasFile('photo')) {
             $extension = strtolower($request->file('photo')->getClientOriginalExtension());
             $validExtensions = ['jpg', 'jpeg', 'png'];
             $photoName = uniqid() . '.' . $extension;
             if (in_array($extension, $validExtensions)) {
                 File::delete('uploads/products/' . $product->photo);
                 Image::make($request->file('photo'))->resize(260, 180, function ($constraint) {
                     $constraint->aspectRatio();
                     $constraint->upsize();
                 })->save('uploads/products/' . $photoName);
                 $product->photo = $photoName;
             } else {
                 flash()->error('Image must be of extension jpg/png');
                 return redirect()->back();
             }
         }
         $product->added_by = auth()->user()->id;
         $product->update();
         if ($request->has('category_id') && count($request->input('category_id')) > 0) {
             $product->categories()->sync($request->input('category_id'));
         }
         DB::commit();
         flash()->success('Product information updated successfully.');
         return redirect()->back();
     } catch (\Exception $e) {
         DB::rollback();
         flash()->error('Something went wrong. Please try again later.');
         return redirect()->back();
     }
 }