private static List <ProcessedProductDelta> GenerateAccountPriceDeltas(IEnumerable <ProcessedAccountPrice> accountPrices, string appKey) { var validAccountPriceDeltas = new List <ProcessedProductDelta>(); var deltasValid = false; var productsPerDelta = 5000; while (!deltasValid) { validAccountPriceDeltas.Clear(); var accountPricePartitions = Partition(accountPrices, productsPerDelta); deltasValid = accountPricePartitions.All((partition) => { var feed = new ProcessedProductDelta(appKey); feed.AccountPrices = partition.ToArray(); validAccountPriceDeltas.Add(feed); var deltaTotal = JSONSerialization.GetByteSizeOfObject(feed); return(deltaTotal < _maxDeltaSize); }); if (!deltasValid) { productsPerDelta = productsPerDelta / 5; if (productsPerDelta < 8) { throw new Exception("Individual account prices are too large to fit into a delta to send to PureClarity. Please reduce the amount of data been sent per product."); } } } return(validAccountPriceDeltas); }
private static List <ProcessedProductDelta> GenerateDeletedProductDeltas(IEnumerable <DeletedProductSku> deletedProducts, string appKey) { var validDeletedProductDeltas = new List <ProcessedProductDelta>(); var deltasValid = false; var productsPerDelta = 5000; while (!deltasValid) { validDeletedProductDeltas.Clear(); var deletedProductPartitions = Partition(deletedProducts, productsPerDelta); deltasValid = deletedProductPartitions.All((partition) => { var feed = new ProcessedProductDelta(appKey); feed.DeleteProducts = partition.Select((deletedProduct) => deletedProduct.Sku).ToArray(); validDeletedProductDeltas.Add(feed); var deltaTotal = JSONSerialization.GetByteSizeOfObject(feed); return(deltaTotal < _maxDeltaSize); }); if (!deltasValid) { productsPerDelta = productsPerDelta / 5; if (productsPerDelta < 8) { throw new Exception("Individual deleted product skus are too large to fit into a delta to send to PureClarity. You may have the wrong data in your sku"); } } } return(validDeletedProductDeltas); }