Пример #1
0
        private void RunWithPaging(DateTime updateMinUtc)
        {
            var startOfRun = DateTime.UtcNow;
            var page       = 1;
            var pageSize   = _config.PageSize;

            var updateMin = _instanceTimeZoneService.ToAcumaticaTimeZone(updateMinUtc);

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

                var json      = _customerClient.RetrieveCustomers(updateMin, page, pageSize);
                var customers = json.DeserializeFromJson <List <Customer> >();

                if (customers.Count == 0)
                {
                    break;
                }

                foreach (var customer in customers)
                {
                    UpdateCustomerToPersist(customer);

                    // Disaster recovery
                    // AttemptToLinkCustomerWithExistingRecord()
                }

                page++;
            }

            var GetEnd = (startOfRun).AddAcumaticaBatchFudge();

            _batchStateRepository.UpdateCustomersGetEnd(GetEnd);
        }