/** * @param object $jsonObject The WishList data. * @param Product[] $products * * @return WishListVariantItem * * @throws \AboutYou\SDK\Exception\UnexpectedResultException */ public static function createFromJson($jsonObject, array $products) { $item = new static($jsonObject->variant_id, isset($jsonObject->additional_data) ? (array) $jsonObject->additional_data : null, isset($jsonObject->app_id) ? $jsonObject->app_id : null); $item->parseErrorResult($jsonObject); $item->jsonObject = $jsonObject; if ($jsonObject->product_id !== null) { if (isset($products[$jsonObject->product_id])) { $item->setProduct($products[$jsonObject->product_id]); } else { $item->errorCode = self::ERROR_CODE_PRODUCT_NOT_INCLUDED; $item->errorMessage = 'Product with ID ' . $jsonObject->product_id . ' expected but wasnt received with the WishList'; } } unset($jsonObject->variant_id, $jsonObject->additional_data, $jsonObject->product_id); return $item; }
/** * @param object $jsonObject The basket data. * @param Product[] $products * * @return BasketItem * * @throws \AboutYou\SDK\Exception\UnexpectedResultException */ public static function createFromJson($jsonObject, array $products) { $item = new static($jsonObject->id, $jsonObject->variant_id, isset($jsonObject->additional_data) ? (array) $jsonObject->additional_data : null, isset($jsonObject->app_id) ? $jsonObject->app_id : null, isset($jsonObject->delivery_carrier) ? $jsonObject->delivery_carrier : null, isset($jsonObject->delivery_estimation) ? DeliveryEstimation::createFromJSON($jsonObject->delivery_estimation) : null, isset($jsonObject->package_id) ? intval($jsonObject->package_id) : null); $item->parseErrorResult($jsonObject); $item->jsonObject = $jsonObject; if (!empty($jsonObject->product_id)) { if (isset($products[$jsonObject->product_id])) { $item->setProduct($products[$jsonObject->product_id]); } else { if (!isset($jsonObject->error_code) || !in_array($jsonObject->error_code, [404, 410])) { throw new \AboutYou\SDK\Exception\UnexpectedResultException('Product with ID ' . $jsonObject->product_id . ' expected but was not received with the basket'); } } } unset($jsonObject->id, $jsonObject->variant_id, $jsonObject->additional_data, $jsonObject->product_id); return $item; }
/** * @param \stdClass $jsonObject * @param ModelFactoryInterface $factory * @param Product[] $products * * @return WishListSet */ public static function createFromJson(\stdClass $jsonObject, ModelFactoryInterface $factory, $products) { $set = new static($jsonObject->id, isset($jsonObject->additional_data) ? (array) $jsonObject->additional_data : null, isset($jsonObject->added_on) ? $jsonObject->added_on : null); $set->parseErrorResult($jsonObject); foreach ($jsonObject->set_items as $index => $jsonItem) { $item = $factory->createWishListSetItem($jsonItem, $products); if ($item->hasErrors()) { $set->errors[$index] = $item; } else { $set->items[$index] = $item; } } $set->totalPrice = isset($jsonObject->total_price) ? $jsonObject->total_price : null; $set->totalNet = isset($jsonObject->total_net) ? $jsonObject->total_net : null; $set->totalVat = isset($jsonObject->total_vat) ? $jsonObject->total_vat : null; return $set; }
/** * @param \stdClass $json * * @return static */ public static function createFromJson(\stdClass $jsonObject) { $order = new static($jsonObject->url, $jsonObject->user_token, $jsonObject->app_token); $order->parseErrorResult($jsonObject); return $order; }