/** * @param $items * @param bool $priceIncludesTax * @param int $shippingTaxRate * @return array */ public function makeFromIds($items, $priceIncludesTax, $shippingTaxRate = 0) { $products = $this->cartRepository->getProducts($items); $productFactory = new ProductFactory(); $final = []; foreach ($this->getUniqueList($items) as $productVariationId => $quantity) { /** @noinspection PhpUndefinedFieldInspection */ foreach ($products->result as $product) { $vrProduct = $productFactory->fromApi($product); if ($product->variations[0]->id == $productVariationId) { $final[] = $this->make($vrProduct, $priceIncludesTax, $quantity, $shippingTaxRate); } } } return $final; }
/** * @param $result * @return ProductSearchResult */ public function fromApi($result) { $productFactory = new ProductFactory(); $products = []; foreach ($result->result as $product) { $products[] = $productFactory->fromApi($product); } $colors = []; $types = []; $sizes = []; foreach ($result->colors as $color) { $colors[] = new Color($color->name, $color->hex); } foreach ($result->types as $type) { $types[] = new Type($type->name); } foreach ($result->sizes as $size) { $sizes[] = new Size($size->name); } return new ProductSearchResult(['products' => $products, 'totalRows' => $result->total_rows, 'limit' => $result->limit, 'offset' => $result->offset, 'searchParams' => $result->search_params, 'availableColors' => $colors, 'availableTypes' => $types, 'availableSizes' => $sizes, 'breadcrumbs' => $result->breadcrumbs]); }
/** * @param $productVariationId * @return mixed */ public function findByVariationId($productVariationId) { $searchParams['product_variation_id'] = $productVariationId; $productFactory = new ProductFactory(); return $productFactory->fromApi(VendirunApi::makeRequest('product/product', $searchParams)->getData()); }