/**
  * Show the form for creating a new resource.
  *
  * @return Response
  */
 public function create($orderId)
 {
     $order = Order::whereId($orderId)->select('id', 'type')->first();
     $user = \Auth::user();
     if ($user) {
         //If a user is not trusted, send the error. Avoiding direct access routes to action by invalid user
         if (!$user->isTrusted()) {
             return redirect()->route('orders.show_cart', [$order->id])->withErrors(trans('freeproduct.unauthorized_access'));
         }
         //You can create free product from a sort order cart or wish list
         if ($order->type != 'cart' && $order->type != 'wishlist') {
             return redirect()->route('orders.show_cart', [$order->id])->withErrors(trans('freeproduct.order_type_invalid'));
         }
         //As is authorized to create, I check order detail
         $order_content = OrderDetail::where('order_id', $order->id)->get();
         //Sumatorial the total order to validate that the free product creator has enough points for the transaction
         $total_points = 0;
         foreach ($order_content as $orderDetail) {
             $product = Product::whereId($orderDetail->product_id)->select('id', 'price')->first();
             $total_points += $orderDetail->quantity * $product->price;
         }
         if ($user->current_points < $total_points) {
             return redirect()->route('orders.show_cart')->withErrors(['main_error' => [trans('store.cart_view.insufficient_funds')]]);
         }
         $jsonOrder = json_encode($order_content->toArray());
         $panel = $this->panel;
         return view('freeproducts.create', compact('jsonOrder', 'panel', 'orderId'));
     } else {
         return redirect()->route('products')->withErrors(trans('freeproduct.unauthorized_access'));
     }
 }
 public function update($id, $product)
 {
     Product::whereId($id)->update(['number' => $product['number'], 'name' => $product['name'], 'manufacturer_id' => $product['manufacturer_id'], 'model' => $product['model'], 'category_id' => $product['category_id'], 'price' => $product['price'], 'processor' => $product['processor'], 'memory' => $product['memory'], 'hdd' => $product['hdd'], 'graphics' => $product['graphics'], 'screen' => $product['screen'], 'optical' => $product['optical']]);
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, Product $products)
 {
     //
     $data = $request->all();
     unset($data['_token']);
     unset($data['_method']);
     $data['created_by'] = \Auth::user()->id;
     $data['updated_by'] = \Auth::user()->id;
     $data['is_active'] = 1;
     if (Input::file('image')) {
         $destinationPath = 'img/product';
         // upload path
         $extension = Input::file('image')->getClientOriginalExtension();
         // getting image extension
         $fileName = rand(11111, 99999) . '.' . $extension;
         // renameing image
         $data['photo'] = $fileName;
         Input::file('image')->move($destinationPath, $fileName);
         // uploading file to given path
     }
     unset($data['image']);
     $products->whereId(Input::get('id'))->update($data);
     return Redirect::route('products.index');
 }
 public function showProduct($id)
 {
     $product = Product::whereId($id)->first();
     $setting = Setting::first();
     return view('sites.showProduct', compact('product', 'setting'));
 }