public async Task <IActionResult> SaveFulfillmentCenter([FromBody] FulfillmentCenter center) { await _fulfillmentCenterService.SaveChangesAsync(new[] { center }); return(Ok(center)); }
public async Task ImportAsync(Stream inputStream, ExportImportOptions options, Action <ExportImportProgressInfo> progressCallback, ICancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var progressInfo = new ExportImportProgressInfo(); var fulfillmentCentersTotalCount = 0; var inventoriesTotalCount = 0; using (var streamReader = new StreamReader(inputStream)) using (var reader = new JsonTextReader(streamReader)) { while (reader.Read()) { if (reader.TokenType == JsonToken.PropertyName) { if (reader.Value.ToString() == "FulfillmentCenterTotalCount") { fulfillmentCentersTotalCount = reader.ReadAsInt32() ?? 0; } else if (reader.Value.ToString() == "FulfillmentCenters") { var fulfillmentCenters = new List <FulfillmentCenter>(); var fulfillmentCenterCount = 0; while (reader.TokenType != JsonToken.EndArray) { var fulfillmentCenter = _serializer.Deserialize <FulfillmentCenter>(reader); fulfillmentCenters.Add(fulfillmentCenter); fulfillmentCenterCount++; reader.Read(); } for (int i = 0; i < fulfillmentCenterCount; i += BatchSize) { await _fulfillmentCenterService.SaveChangesAsync(fulfillmentCenters.Skip(i).Take(BatchSize).ToArray()); if (fulfillmentCenterCount > 0) { progressInfo.Description = $"{ i } of { fulfillmentCenterCount } fulfillment centers imported"; } else { progressInfo.Description = $"{ i } fulfillment centers imported"; } progressCallback(progressInfo); } } else if (reader.Value.ToString() == "InventoriesTotalCount") { inventoriesTotalCount = reader.ReadAsInt32() ?? 0; } else if (reader.Value.ToString() == "Inventories") { var inventories = new List <InventoryInfo>(); var inventoryCount = 0; while (reader.TokenType != JsonToken.EndArray) { var inventory = _serializer.Deserialize <InventoryInfo>(reader); inventories.Add(inventory); inventoryCount++; reader.Read(); } for (int i = 0; i < inventoryCount; i += BatchSize) { await _inventoryService.SaveChangesAsync(inventories.Skip(i).Take(BatchSize)); if (inventoryCount > 0) { progressInfo.Description = $"{i} of {inventoryCount} inventories imported"; } else { progressInfo.Description = $"{i} inventories imported"; } progressCallback(progressInfo); } } } } } }
public async Task DoImportAsync(Stream inputStream, Action <ExportImportProgressInfo> progressCallback, ICancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var progressInfo = new ExportImportProgressInfo(); using (var streamReader = new StreamReader(inputStream)) using (var reader = new JsonTextReader(streamReader)) { while (reader.Read()) { if (reader.TokenType == JsonToken.PropertyName) { if (reader.Value.ToString() == "FulfillmentCenters") { await reader.DeserializeJsonArrayWithPagingAsync <FulfillmentCenter>(_jsonSerializer, BatchSize, items => _fulfillmentCenterService.SaveChangesAsync(items.ToArray()), processedCount => { progressInfo.Description = $"{ processedCount } FulfillmentCenters have been imported"; progressCallback(progressInfo); }, cancellationToken); } else if (reader.Value.ToString() == "Inventories") { await reader.DeserializeJsonArrayWithPagingAsync <InventoryInfo>(_jsonSerializer, BatchSize, items => _inventoryService.SaveChangesAsync(items.ToArray()), processedCount => { progressInfo.Description = $"{ processedCount } Inventories have been imported"; progressCallback(progressInfo); }, cancellationToken); } } } } }