Esempio n. 1
0
        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));
        }