예제 #1
0
        private void Run(SearchFilter filter)
        {
            if (_jobMonitoringService.DetectCurrentJobInterrupt())
            {
                return;
            }

            var startOfRun = DateTime.UtcNow;
            var results    = _orderApi.Retrieve(filter);

            while (true)
            {
                var orders = results.Body.DeserializeToOrderList().orders;
                UpsertOrders(orders);

                if (_jobMonitoringService.DetectCurrentJobInterrupt())
                {
                    return;
                }

                if (results.LinkHeader.NoMo())
                {
                    break;
                }

                results = _orderApi.RetrieveByLink(results.LinkHeader.NextLink);
            }

            // Set the Batch State end marker to the time when this run started
            //
            var orderBatchEnd = (startOfRun).SubtractFudgeFactor();

            _batchRepository.UpdateOrdersGetEnd(orderBatchEnd);
        }