private function slugGenerator($data)
 {
     VtexRest::validateJson($data);
     $dataSlug = json_decode($data);
     if (property_exists($dataSlug, 'name')) {
         $slug = URI::slug_generator($dataSlug->name);
     } else {
         Handler::error('Falha na integração: O name não foi enviado para geração do slug: ' . __METHOD__, is_string($data) ? $data : '');
     }
     Handler::success('Slug gerado com sucesso', json_encode(array('slug' => $slug)));
 }
 private function update($data)
 {
     VtexRest::validateJson($data);
     $restParams = Config::get('vtex_params_rest');
     $service = $restParams['url_price_update'];
     $key = $restParams['app_key'];
     $token = $restParams['app_token'];
     $response = VtexRest::execute($data, $service, $key, $token);
     if (Uteis::isJson($response)) {
         $jsonDecode = json_decode($response);
         if (is_array($jsonDecode) and isset($jsonDecode[0]) and property_exists($jsonDecode[0], 'itemId')) {
             Handler::success('Preço de sku atualizado com sucesso', $response);
         } elseif (is_object($jsonDecode) and property_exists($jsonDecode, 'error')) {
             Handler::error('#A: Falha no processo de Integração: Preço de sku não atualizado. ' . __METHOD__, $response);
         } else {
             Handler::error('#B: Falha no processo de Integração: Preço de sku não atualizado. ' . __METHOD__, $response);
         }
     } else {
         Handler::error('Falha no processo de Integração: Preço não atualizado :: Retorno fora do padrão: ' . __METHOD__, is_string($response) ? $response : '');
     }
 }
 private function addAddress($data, $profileId)
 {
     VtexRest::validateJson($data);
     $restParams = Config::get('vtex_params_rest');
     $service = $service = preg_replace('/@PROFILEID@/', $profileId, $restParams['url_client_add_address']);
     $key = $restParams['app_key'];
     $token = $restParams['app_token'];
     $response = VtexRest::execute($data, $service, $key, $token);
     if (Uteis::isJson($response)) {
         $jsonDecode = json_decode($response);
         if (is_object($jsonDecode) and property_exists($jsonDecode, 'profileId')) {
             Handler::success('Endereço criado criado com sucesso', $response);
         } elseif (is_object($jsonDecode) and property_exists($jsonDecode, 'error')) {
             Handler::error('#A: Falha no processo de Integração: Endereço não criado. ' . __METHOD__, $response);
         } else {
             Handler::error('#B: Falha no processo de Integração: Endereço não criado. ' . __METHOD__, $response);
         }
     } else {
         Handler::error('Falha no processo de Integração: Endereço não criado :: Retorno fora do padrão json: ' . __METHOD__, is_string($response) ? $response : '');
     }
 }
 private function getReservations($data)
 {
     VtexRest::validateJson($data);
     $restParams = Config::get('vtex_params_rest');
     $service = $restParams['url_stock_reservations'];
     $dataStock = json_decode($data);
     if (property_exists($dataStock, 'itemId') and property_exists($dataStock, 'wareHouseId')) {
         $service = preg_replace(array('/@WAREHOUSEID@/', '/@ITEMID@/'), array($dataStock->wareHouseId, $dataStock->itemId), $restParams['url_stock_reservations']);
     } else {
         Handler::error('Falha na integração: É preciso enviar os parâmetros (itemId e wareHouseId) para realizar a consulta: ' . __METHOD__, is_string($data) ? $data : '');
     }
     $data = null;
     $key = $restParams['app_key'];
     $token = $restParams['app_token'];
     $response = VtexRest::execute($data, $service, $key, $token, false);
     if (Uteis::isJson($response)) {
         $jsonDecode = json_decode($response);
         if (is_object($jsonDecode) and property_exists($jsonDecode, 'error')) {
             Handler::error('#A: Falha no processo de Integração: Estoque Reservado não consultado . ' . __METHOD__, $response);
         } elseif (is_array($jsonDecode) or true) {
             Handler::success('Estoque reservado de sku consultado com sucesso', $response);
         } else {
             Handler::error('#B: Falha no processo de Integração: Estoque reservado não consultado . ' . __METHOD__);
         }
     } else {
         Handler::error('Falha no processo de Integração: Estoque reservado não consultado :: Retorno fora do padrão json: ' . __METHOD__, is_string($response) ? $response : '');
     }
 }
 public function orderTransactionIteration($data)
 {
     VtexRest::validateJson($data);
     $restParams = Config::get('vtex_params_rest');
     $dataIteration = json_decode($data);
     if (property_exists($dataIteration, 'transaction_id')) {
         $service = preg_replace('/@TRANSACTIONID@/', $dataIteration->transaction_id, $restParams['url_order_transaction_iteration']);
     } else {
         Handler::error('Falha na integração: É preciso enviar transaction_id para pegar as iterações da transação : ' . __METHOD__, is_string($data) ? $data : '');
     }
     $key = $restParams['app_key'];
     $token = $restParams['app_token'];
     $response = VtexRest::execute($data, $service, $key, $token, false);
     if (Uteis::isJson($response)) {
         $jsonDecode = json_decode($response);
         if (isset($jsonDecode[0]) and is_object($jsonDecode[0]) and property_exists($jsonDecode[0], 'TransactionId')) {
             Handler::success('Consulta de transação realizada com sucesso', $response);
         } elseif (is_object($jsonDecode) and property_exists($jsonDecode, 'error')) {
             Handler::error('#A: Falha no processo de Integração: Consulta de transação não realizada. ' . __METHOD__, $response);
         } else {
             Handler::error('#B: Falha no processo de Integração: Consulta de transação não realizada. ' . __METHOD__, $response);
         }
     } else {
         Handler::error('Falha no processo de Integração: Consulta de transação não realizada :: Retorno fora do padrão json: ' . __METHOD__, is_string($response) ? $response : '');
     }
 }