Example #1
0
        public override SyncResult Sync(OrderSyncModes syncMode, CancellationToken?token)
        {
            _log.Info("Sync, syncMode=" + syncMode);
            var processedOrderIdList = new List <SyncResultOrderInfo>();
            var isSuccess            = true;

            _syncInfo.PingSync();

            var syncResult = SyncAllNewOrders(token,
                                              _log,
                                              _api,
                                              _api.Market,
                                              GetOrderItemsFromMarket,
                                              _syncInfo,

                                              _rateProviders,
                                              _quantityManager,
                                              _settings,
                                              _emailService,
                                              _validatorService,
                                              _cacheService,

                                              _companyAddress,
                                              DateTime.UtcNow - _settings.GetOrdersSyncForMissedInterval(_api.Market, _api.MarketplaceId),
                                              _time);

            isSuccess = isSuccess && syncResult.IsSuccess;
            if (syncResult.ProcessedOrders != null)
            {
                processedOrderIdList.AddRange(syncResult.ProcessedOrders);
            }

            _syncInfo.PingSync();

            syncResult = UpdateExistingUnshippedOrders(token,
                                                       _log,
                                                       _api,

                                                       GetOrderItemsFromMarket,

                                                       _syncInfo,

                                                       _rateProviders,
                                                       _quantityManager,
                                                       _emailService,
                                                       _validatorService,

                                                       processedOrderIdList.Select(o => o.OrderId).ToList(),
                                                       _companyAddress,

                                                       _time);

            isSuccess = isSuccess && syncResult.IsSuccess;
            if (syncResult.ProcessedOrders != null)
            {
                processedOrderIdList.AddRange(syncResult.ProcessedOrders);
            }

            _syncInfo.PingSync();

            return(new SyncResult()
            {
                ProcessedOrders = processedOrderIdList,
                IsSuccess = isSuccess
            });
        }
Example #2
0
        public override SyncResult Sync(OrderSyncModes syncMode, CancellationToken?cancel)
        {
            var syncMissedFrom = DateTime.UtcNow -
                                 (syncMode == OrderSyncModes.Full
                         ? _settings.GetOrdersSyncForMissedInterval(_api.Market, _api.MarketplaceId)
                         : _settings.GetOrdersSyncForMissedShortInterval(_api.Market, _api.MarketplaceId));

            _log.Info("Sync, syncMode=" + syncMode + ", from date=" + syncMissedFrom);

            var isSuccess            = true;
            var processedOrderIdList = new List <SyncResultOrderInfo>();
            var skippedOrderIdList   = new List <SyncResultOrderInfo>();

            _syncInfo.PingSync();

            //STEP 1. SyncAllUnshippedOrders
            var stopWatch = Stopwatch.StartNew();


            var syncResult = SyncAllUnshippedOrders(
                cancel,
                _log,
                _api,

                GetOrderItemsFromMarket,
                _syncInfo,

                _rateProviders,
                _quantityManager,
                _settings,
                _emailService,
                _validatorService,
                _cacheService,

                _companyAddress,
                syncMissedFrom,
                _time);

            isSuccess = isSuccess && syncResult.IsSuccess;
            if (syncResult.ProcessedOrders != null)
            {
                processedOrderIdList.AddRange(syncResult.ProcessedOrders);
            }
            if (syncResult.SkippedOrders != null)
            {
                skippedOrderIdList.AddRange(syncResult.SkippedOrders);
            }

            stopWatch.Stop();
            _log.Info("STEP. SyncAllUnshippedOrders, duration=" + stopWatch.ElapsedMilliseconds);

            _syncInfo.PingSync();

            //STEP 2. UpdateExistingOrders
            stopWatch.Start();

            var excludedOrders = processedOrderIdList.Select(o => o.OrderId).ToList();

            if (syncResult.SkippedOrders != null)
            {
                excludedOrders.AddRange(syncResult.SkippedOrders.Where(o => o.OrderStatus == OrderStatusEnumEx.Unshipped).Select(o => o.OrderId).ToList());
            }

            //NOTE: exclude list contains orders that have unshipped status on Market (no need to update these, except if orders in DB have status Pending)
            syncResult = UpdateExistingOrders(cancel,
                                              _log,
                                              _api,

                                              GetOrderItemsFromMarket,

                                              _syncInfo,
                                              _rateProviders,
                                              _quantityManager,
                                              _emailService,
                                              _validatorService,

                                              syncMode == OrderSyncModes.Full,
                                              excludedOrders,

                                              _companyAddress,
                                              _time);

            isSuccess = isSuccess && syncResult.IsSuccess;
            if (syncResult.ProcessedOrders != null)
            {
                processedOrderIdList.AddRange(syncResult.ProcessedOrders);
            }
            if (syncResult.SkippedOrders != null)
            {
                skippedOrderIdList.AddRange(syncResult.SkippedOrders);
            }

            stopWatch.Stop();
            _log.Info("STEP. UpdateExistingOrders, duration=" + stopWatch.ElapsedMilliseconds);

            _syncInfo.PingSync();

            //STEP 3. StoreNewPendingOrders
            stopWatch.Start();

            syncResult = StoreNewPendingOrders(cancel,
                                               _log,
                                               _api,
                                               GetOrderItemsFromMarket,

                                               _rateProviders,
                                               _validatorService,
                                               _emailService,
                                               _syncInfo,
                                               _settings,
                                               _quantityManager,
                                               _cacheService,

                                               _companyAddress,
                                               _time);

            isSuccess = isSuccess && syncResult.IsSuccess;
            if (syncResult.ProcessedOrders != null)
            {
                processedOrderIdList.AddRange(syncResult.ProcessedOrders);
            }
            if (syncResult.SkippedOrders != null)
            {
                skippedOrderIdList.AddRange(syncResult.SkippedOrders);
            }

            stopWatch.Stop();
            _log.Info("STEP. StoreNewPendingOrders, duration=" + stopWatch.ElapsedMilliseconds);

            _syncInfo.PingSync();

            return(new SyncResult()
            {
                IsSuccess = isSuccess,
                ProcessedOrders = processedOrderIdList,
                SkippedOrders = skippedOrderIdList,
            });
        }