示例#1
0
        public async Task WhenIParseTheDetailsOfTheFiles(string filePath)
        {
            string[] files = { filePath };

            var attr = File.GetAttributes(filePath);

            if (attr.HasFlag(FileAttributes.Directory))
            {
                files = Directory.GetFiles(filePath, "*.csv");
            }

            var readTasks = files.Select(s =>
            {
                var sourceKind = CsvAccountOperationManager.DetectFileSourceKindFromFileName(s);
                var fmd        = FileStructureMetadataFactory.CreateDefault(sourceKind);
                using (var fs = File.OpenRead(s))
                {
                    return(_context.CsvAccountOperationManager.ReadAsync(fs, fmd)
                           .ContinueWith(t =>
                                         t.Result.Select(op => _context.Transformer.Apply(op, fmd.GetCultureInfo()))));
                }
            });

            var operationsBatches = await Task.WhenAll(readTasks);

            _context.UnifiedOperations =
                operationsBatches.SelectMany(operations => operations)
                .SortByOperationIdDesc()
                .ToList();
        }