private BackupObject GetBackupObject(Action <ExportImportProgressInfo> progressCallback)
        {
            progressCallback(new ExportImportProgressInfo("The fulfilmentCenters are loading"));
            var centers = _fulfillmentCenterSearchService.SearchCenters(new FulfillmentCenterSearchCriteria {
                Take = int.MaxValue
            }).Results;

            progressCallback(new ExportImportProgressInfo("Evaluation the number of inventory records"));

            var searchResult = _inventorySearchService.SearchInventories(new InventorySearchCriteria {
                Take = BatchSize
            });
            var totalCount  = searchResult.TotalCount;
            var inventories = searchResult.Results.ToList();

            for (int i = BatchSize; i < totalCount; i += BatchSize)
            {
                progressCallback(new ExportImportProgressInfo($"{i} of {totalCount} inventories have been loaded"));
                searchResult = _inventorySearchService.SearchInventories(new InventorySearchCriteria {
                    Skip = i, Take = BatchSize
                });
                inventories.AddRange(searchResult.Results);
            }

            return(new BackupObject()
            {
                InventoryInfos = inventories.ToArray(),
                FulfillmentCenters = centers.ToArray()
            });
        }
        private void SaveProducts(List <CsvProduct> csvProducts, ExportImportProgressInfo progressInfo, Action <ExportImportProgressInfo> progressCallback)
        {
            var defaultFulfilmentCenter = _fulfillmentCenterSearchService.SearchCenters(new Domain.Inventory.Model.Search.FulfillmentCenterSearchCriteria {
                Take = 1
            }).Results.FirstOrDefault();

            var totalProductsCount = csvProducts.Count();

            for (int i = 0; i < totalProductsCount; i += 10)
            {
                var products = csvProducts.Skip(i).Take(10).ToList();

                try
                {
                    _productService.Update(products.ToArray());

                    SaveProductInventories(products, defaultFulfilmentCenter);

                    SaveProductPrices(products);
                }
                catch (FluentValidation.ValidationException validationEx)
                {
                    lock (_lockObject)
                    {
                        foreach (var validationErrorGroup in validationEx.Errors.GroupBy(x => x.PropertyName))
                        {
                            string errorMessage = string.Join("; ", validationErrorGroup.Select(x => x.ErrorMessage));
                            progressInfo.Errors.Add(errorMessage);
                            progressCallback(progressInfo);
                        }
                    }
                }
                catch (Exception ex)
                {
                    lock (_lockObject)
                    {
                        progressInfo.Errors.Add(ex.ToString());
                        progressCallback(progressInfo);
                    }
                }
                finally
                {
                    lock (_lockObject)
                    {
                        //Raise notification
                        progressInfo.ProcessedCount += products.Count();
                        progressInfo.Description     =
                            $"Saving products: {progressInfo.ProcessedCount} of {progressInfo.TotalCount} created";
                        progressCallback(progressInfo);
                    }
                }
            }
        }
Exemplo n.º 3
0
        public IHttpActionResult SearchFulfillmentCenters([FromBody] FulfillmentCenterSearchCriteria searchCriteria)
        {
            var retVal = _fulfillmentCenterSearchService.SearchCenters(searchCriteria);

            return(Ok(retVal));
        }