customerQueueCollectionFactory = $customerQueueCollectionFactory; $this->customerSync = $customerSync; $this->customerMapper = $customerMapper; } /** * Fetch data from NetSuite * * @param int $pageSize * @param int $page * @return array */ public function fetch($pageSize = 50, $page = 1, $additionalParams = []){ return $this->netSuiteAPI->fetchCustomers($pageSize, $page, $additionalParams); } /** * {@inheritdoc} */ public function getPageSize() { return $this->pageSize; } /** * Convert NetSuite data to Magento format * * @param array $data * @return array */ public function convertToMagentoFormat($data){ return $this->customerMapper->convertToMagentoFormat($data); } /** * adds data to the queue. * * @param array $data * @return void */ public function enqueue($data){ $queue = $this->customerQueueCollectionFactory->create(); foreach ($data as $item) { $queue->insertOrUpdate($item); } } /** * Get next queue items to process * * @param int $batchSize * @return array */ public function dequeue($batchSize = 50){ return $this->customerQueueCollectionFactory->create()->getNext($batchSize); } /** * Process queue item * * @param $queueItem * @return array */ public function processQueueItem($queueItem){ $data = $this->serializer->unserialize($queueItem->getData('data')); return $this->customerSync->createOrSkip($data); } }