Esempio n. 1
0
 /**
  * Represents the "check_stock" action.
  *
  * @throws ShopgateLibraryException
  * @see http://wiki.shopgate.com/Shopgate_Plugin_API_check_stock
  */
 protected function checkStock()
 {
     if (!isset($this->params['items'])) {
         throw new ShopgateLibraryException(ShopgateLibraryException::PLUGIN_API_NO_ITEMS);
     }
     if (empty($this->response)) {
         $this->response = new ShopgatePluginApiResponseAppJson($this->trace_id);
     }
     $cart = new ShopgateCart();
     $cart->setItems($this->params['items']);
     $items = $this->plugin->checkStock($cart);
     $responseData = array();
     if (!is_array($items)) {
         throw new ShopgateLibraryException(ShopgateLibraryException::PLUGIN_API_WRONG_RESPONSE_FORMAT, '$cartData Is type of : ' . is_object($items) ? get_class($items) : gettype($items));
     }
     $cartItems = array();
     if (!empty($items)) {
         foreach ($items as $cartItem) {
             /** @var ShopgateCartItem $cartItem */
             if (!is_object($cartItem) || !$cartItem instanceof ShopgateCartItem) {
                 throw new ShopgateLibraryException(ShopgateLibraryException::PLUGIN_API_WRONG_RESPONSE_FORMAT, '$cartItem Is type of : ' . is_object($cartItem) ? get_class($cartItem) : gettype($cartItem));
             }
             $item = $cartItem->toArray();
             $notNeededArrayKeys = array('qty_buyable', 'unit_amount', 'unit_amount_with_tax');
             foreach ($notNeededArrayKeys as $key) {
                 if (array_key_exists($key, $item)) {
                     unset($item[$key]);
                 }
             }
             $cartItems[] = $item;
         }
     }
     $responseData["items"] = $cartItems;
     $this->responseData = $responseData;
 }