public function action_update_orders()
 {
     WPLA()->logger->info("do_action: wpla_update_orders");
     $accounts = WPLA_AmazonAccount::getAll();
     foreach ($accounts as $account) {
         $api = new WPLA_AmazonAPI($account->id);
         // get date of last order
         $om = new WPLA_OrdersModel();
         $lastdate = $om->getDateOfLastOrder($account->id);
         WPLA()->logger->info('getDateOfLastOrder() returned: ' . $lastdate);
         $days = isset($_REQUEST['days']) && $_REQUEST['days'] ? $_REQUEST['days'] : false;
         if (!$lastdate && !$days) {
             $days = 1;
         }
         // get orders
         $orders = $api->getOrders($lastdate, $days);
         // echo "<pre>";print_r($orders);echo"</pre>";#die();
         if (is_array($orders)) {
             // run the import
             $importer = new WPLA_OrdersImporter();
             $success = $importer->importOrders($orders, $account);
             $msg = sprintf(__('%s order(s) were processed for account %s.', 'wpla'), sizeof($orders), $account->title);
             if ($importer->updated_count > 0) {
                 $msg .= "\n" . 'Updated orders: ' . $importer->updated_count;
             }
             if ($importer->imported_count > 0) {
                 $msg .= "\n" . 'Created orders: ' . $importer->imported_count;
             }
             WPLA()->logger->info($msg);
             $this->showMessage(nl2br($msg), 0, 1);
         } elseif ($orders->Error->Message) {
             $msg = sprintf(__('There was a problem downloading orders for account %s.', 'wpla'), $account->title) . ' - Error: ' . $orders->Error->Message;
             WPLA()->logger->error($msg);
             $this->showMessage(nl2br($msg), 1, 1);
         } else {
             $msg = sprintf(__('There was a problem downloading orders for account %s.', 'wpla'), $account->title);
             WPLA()->logger->error($msg);
             $this->showMessage(nl2br($msg), 1, 1);
         }
     }
     $this->message = '';
 }
 public function updateFromAmazon($id)
 {
     // get order
     $order = $this->getItem($id);
     if (!$order) {
         return false;
     }
     // get account
     $account = new WPLA_AmazonAccount($order['account_id']);
     if (!$account) {
         return false;
     }
     // init API
     $this->api = new WPLA_AmazonAPI($account->id);
     $importer = new WPLA_OrdersImporter();
     // update order details
     // echo "<pre>fetching details for ";print_r($order['order_id']);echo"</pre>";
     $orders = $this->api->getOrder($order['order_id']);
     if (is_array($orders) && !empty($orders)) {
         $importer->importOrder($orders[0], $account);
         // import will update existing order automatically - but not order line items
     } elseif (is_object($orders) && !empty($orders->Error->Code) && $orders->Error->Code == 'RequestThrottled') {
         $this->lastOrderID = $order['order_id'];
         return 'RequestThrottled';
     } else {
         // TODO: use showMessage()
         echo "There was a problem fetching order details for order {$order['order_id']} from Amazon.";
         echo "<pre>";
         print_r($orders);
         echo "</pre>";
         #die();
     }
     // update order line items
     // echo "<pre>fetching items for ";print_r($order['order_id']);echo"</pre>";
     $this->api = new WPLA_AmazonAPI($account->id);
     // init API again to allow to log the second request as well
     $items = $this->api->getOrderLineItems($order['order_id']);
     if (is_array($items) && !empty($items)) {
         $importer->importOrderItems($items, $order['order_id']);
     } elseif (is_object($items) && !empty($items->Error->Code) && $items->Error->Code == 'RequestThrottled') {
         $this->lastOrderID = $order['order_id'];
         return 'RequestThrottled';
     } else {
         // TODO: use showMessage()
         echo "There was a problems fetching order line items for order {$order['order_id']} from Amazon.";
         echo "<pre>";
         print_r($items);
         echo "</pre>";
         #die();
     }
     // echo "<pre>";print_r($items);echo"</pre>";#die();
 }
 public function importOrderItems($items, $order_id)
 {
     $importer = new WPLA_OrdersImporter();
     $success = $importer->importOrderItems($items, $order_id);
 }