/**
  * @param ProductRepository $productRepository
  * @param                   $id
  * @param string            $productName
  * @param int               $productVariationId
  * @return \Illuminate\View\View
  */
 public function view(ProductRepository $productRepository, $id, $productName = '', $productVariationId = null)
 {
     $searchParams = $this->productSearchParams();
     $searchParams['product_variation_id'] = $productVariationId;
     $data['product'] = $productRepository->find($id, $searchParams);
     $data['productDisplay'] = $data['product']->getDisplayArray();
     $data['selectedVariation'] = $data['product']->getVariation($productVariationId);
     return View::make('vendirun::product.view', $data);
 }
 /**
  * @param ProductRepository $productRepository
  * @param CustomerRepository $customerRepository
  * @param $productId
  * @return \Illuminate\Contracts\View\View
  */
 public function index(ProductRepository $productRepository, CustomerRepository $customerRepository, $productId)
 {
     $data = [];
     try {
         $data['product'] = $productRepository->find($productId);
     } catch (FailResponseException $e) {
         if (App::environment() == 'production') {
             abort(404);
         }
     }
     try {
         $data['customer'] = $customerRepository->find();
     } catch (CustomerNotFoundException $e) {
         // this exception means we're not logged in. No problem
     }
     $data['recommend'] = true;
     $data['pageTitle'] = trans('vendirun::product.sendProductToFriend');
     return View::make('vendirun::product.recommend', $data);
 }
 /**
  * @param CartRepository $cartRepository
  * @param ProductRepository $productRepository
  * @param CartValuesTransformer $cartValuesTransformer
  * @return array
  */
 public function add(CartRepository $cartRepository, ProductRepository $productRepository, CartValuesTransformer $cartValuesTransformer)
 {
     $productVariationId = Request::get('productVariationId', 0);
     $quantity = Request::get('quantity', 1);
     try {
         $cart = $cartRepository->find();
         $product = $productRepository->findByVariationId($productVariationId);
         $clientInfo = Config::get('clientInfo');
         $priceIncludesTax = $clientInfo->business_settings->tax->price_includes_tax;
         $cartItemFactory = new CartItemFactory($cartRepository, $cart);
         $cartItem = $cartItemFactory->make($product, $priceIncludesTax, $quantity);
         $cart->add($cartItem);
         $cart = $cartRepository->save($cart);
         $final = $cart->toArray($cartValuesTransformer);
         $final['itemAdded'] = $product->getDisplayArray();
         $final['itemAdded']['quantity'] = $quantity;
         return $this->respond(true, $final);
     } catch (\Exception $e) {
         return $this->respond(false, [], $e->getMessage());
     }
 }
 /**
  * @param CartRepository    $cartRepository
  * @param ProductRepository $productRepository
  * @param int               $productVariationId
  * @return \Illuminate\Http\RedirectResponse
  */
 public function add(CartRepository $cartRepository, ProductRepository $productRepository, $productVariationId = NULL)
 {
     try {
         $productVariationId = Request::get('productVariationId', $productVariationId);
         $cart = $cartRepository->find();
         $product = $productRepository->findByVariationId($productVariationId);
         $clientInfo = Config::get('clientInfo');
         $priceIncludesTax = $clientInfo->business_settings->tax->price_includes_tax;
         $cartItemFactory = new CartItemFactory($cartRepository, $cart);
         $cartItem = $cartItemFactory->make($product, $priceIncludesTax, Request::input('quantity', 1));
         $cart->add($cartItem);
         $cartRepository->save($cart);
     } catch (Exception $e) {
         Session::flash('vendirun-alert-error', 'Unable to add your item to the cart. ' . $e->getMessage());
         return Redirect::back();
     }
     Session::flash('vendirun-alert-success', 'Item Added to Cart');
     if (Session::has('primaryPagePath')) {
         return Redirect::to(Session::get('primaryPagePath'));
     }
     return Redirect::back();
 }
 /**
  * @param ProductRepository $productRepository
  * @param                   $productId
  * @return array
  */
 public function find(ProductRepository $productRepository, $productId)
 {
     return $this->respond(true, $productRepository->find($productId)->getDisplayArray());
 }