using GB5Shared.DTO.Ice; using GB5Shared.FileImport; using IceImportDAL.DTO.IceImportPipeline; using Microsoft.Extensions.Logging; namespace IceImportDAL.CustomCode.Parsers; // IceMapIceSourceType = 4 (Csv). public class CsvSourceFileParser : ISourceFileParser { public int SourceType => 4; private readonly IFileToDataTableService _fileReader; private readonly ILogger _logger; public CsvSourceFileParser(IFileToDataTableService fileReader, ILogger logger) { _fileReader = fileReader; _logger = logger; } public async Task ParseAsync( Stream fileStream, string fileName, IceMapDTO mapDefinition, CancellationToken ct) { using var ms = new MemoryStream(); await fileStream.CopyToAsync(ms, ct).ConfigureAwait(false); var table = await _fileReader .ReadFromBytesAsync(ms.ToArray(), ImportFileTypeEnum.Csv, ct) .ConfigureAwait(false); return FlatTableEntitySplitter.Split(table, fileName, mapDefinition, _logger); } }