public CsvAssetReaderReturnModel ReadCSVFile(ProcessCsvFileRequestModel requestModel) { var modelToReturn = new CsvAssetReaderReturnModel(); var assetList = new List <AssetModel>(); var batches = new List <BatchEntity>(); string[] lines = System.IO.File.ReadAllLines(requestModel.Path); lines = lines.Skip(1).ToArray(); foreach (var line in lines) { var asset = GetAssetFromLine(line); if (asset == null) { throw new CsvFileException("Could not read the file"); } assetList.Add(asset); } modelToReturn.Assets = assetList; var listOfBatches = lines.ToList().Split(requestModel.BatchSize); foreach (var batch in listOfBatches) { batches.Add(new BatchEntity { Content = string.Join(Environment.NewLine, batch) }); } modelToReturn.Batches = batches; return(modelToReturn); }
public async Task ProcessCsvFile(ProcessCsvFileRequestModel request) { var csvReadContent = csvAssetReader.ReadCSVFile(request); var assetEntityList = csvReadContent.Assets.Select(assetConverter.ConvertToAssetEntity); await assetRepository.InsertAssets(assetEntityList); await csvReadContent.Batches.ParallelForEachAsync(batch => batchRepository.InsertBatch(batch)); }