/**
  * @param Product $product
  * @param bool $priceIncludesTax
  * @param int $quantity
  * @param int $shippingTaxRate
  * @return CartItem
  */
 public function make(Product $product, $priceIncludesTax, $quantity = 1, $shippingTaxRate = 0)
 {
     $variations = $product->getVariations();
     $productVariation = $variations[0];
     /* @var $productVariation ProductVariation */
     $params = ['productVariationId' => $productVariation->getId(), 'quantity' => $quantity, 'product' => $product, 'basePrice' => $productVariation->getPrice(), 'priceIncludesTax' => $priceIncludesTax, 'shippingType' => $this->shippingType, 'countryId' => $this->countryId, 'shippingTaxRate' => $shippingTaxRate];
     return new CartItem($params);
 }
 /**
  * @return ProductVariation
  */
 private function getThisVariation()
 {
     $variations = $this->product->getVariations();
     return $variations[0];
 }
 /**
  * @param Product $product
  * @param bool $recommend
  * @param string $pageTitle
  * @return array
  */
 private function productBreadcrumbs(Product $product, $recommend = false, $pageTitle = '')
 {
     $breadcrumbs = $this->homeCrumb();
     $breadcrumbs[] = ['title' => trans('vendirun::product.shop'), 'slug' => 'shop'];
     $parent_id = null;
     foreach ($product->getCategories() as $cat) {
         if ($parent_id == null || $cat->parent_id == $parent_id) {
             $breadcrumbs[] = ['title' => $cat->category_name, 'slug' => 'shop' . $cat->slug];
             $parent_id = $cat->category_id;
         }
         if ($parent_id == null) {
             $parent_id = $cat->category_id;
         }
     }
     $slug = $recommend ? $product->makeSlug() : '';
     $breadcrumbs[] = ['title' => $product->getProductName(), 'slug' => $slug];
     if ($recommend) {
         $breadcrumbs[] = ['title' => $pageTitle, 'slug' => $slug];
     }
     return $breadcrumbs;
 }