/**
  * @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;
 }