public async Task <ErplyProductsResponse> GetProducts(ErplyGetProductsRequest request) { return(await SendRequest <ErplyProductsResponse>(request)); }
public async Task ImportProducts() { var erplyApi = _erplyApiFactory.GetApi(); List <string> erplyProductCodes = new List <string>(); List <ErplyProductsResponseRecord> erplyProducts = new List <ErplyProductsResponseRecord>(); var categoryMappings = _erplyMappingService.GetAllCategoryMappings(); ErplyGetProductsRequest erplyProductsRequest = new ErplyGetProductsRequest() { DisplayedInWebshop = 1, GetStockInfo = 1, OrderByDir = ErplyApi.SortDirectionAscending, RecordsOnPage = 100, PageNo = 1, Status = ErplyApi.ProductStatusActive }; ErplyProductsResponse erplyProductsResponse; do { erplyProductsResponse = await erplyApi.GetProducts(erplyProductsRequest); foreach (var erplyProduct in erplyProductsResponse.Records) { erplyProductCodes.Add(erplyProduct.Code); erplyProducts.Add(erplyProduct); } erplyProductsRequest.PageNo++; } while (erplyProductsResponse.Records.Count > 0); var allProductsBySku = _productService.GetProductsBySku(erplyProductCodes.ToArray()); var allProductsCategoryIds = _categoryService.GetProductCategoryIds(allProductsBySku.Select(p => p.Id).ToArray()); foreach (var erplyProduct in erplyProducts) { var product = allProductsBySku.FirstOrDefault(p => p.Sku == erplyProduct.Code); var isNewProduct = product == null; product ??= new Product(); product = GetUpdatedProductFromErplyProduct(product, erplyProduct, isNewProduct); if (isNewProduct) { _productService.InsertProduct(product); } else { _productService.UpdateProduct(product); } _urlRecordService.SaveSlug(product, _urlRecordService.ValidateSeName(product, "", product.Name, true), 0); var productCategories = isNewProduct || !allProductsCategoryIds.ContainsKey(product.Id) ? Array.Empty <int>() : allProductsCategoryIds[product.Id]; var categoryMapping = categoryMappings.FirstOrDefault(mapping => mapping.ErplyProductGroupID == erplyProduct.GroupID); if (!productCategories.Any(c => c == categoryMapping?.CategoryID)) { var productCategory = new ProductCategory { ProductId = product.Id, CategoryId = categoryMapping.CategoryID, IsFeaturedProduct = false, DisplayOrder = 1 }; _categoryService.InsertProductCategory(productCategory); } } }