示例#1
0
        public async Task Upload(Stream fileStream, string name, string fileType)
        {
            await _fileStorageAdapter.Upload(fileStream, name);

            // This is done to have ability later make this process asyncronus
            var fileContent = await _fileStorageAdapter.DownloadFile(name);

            //var fileString = await _fileStorageAdapter.DownloadAsString(name);
            var parser        = _parserFactory.GetParser(fileType);
            var parsingResult = parser.Parse(fileContent);

            if (!parsingResult.IsSuccess)
            {
                throw new Exception();
            }
            if (parsingResult.Results.Count == 0)
            {
                return;
            }

            var transactionsRepository    = _unitOfWork.Transactions;
            var createTranscationCommands = parsingResult.Results.Select(ToCommand).ToArray();

            await transactionsRepository.AddRange(createTranscationCommands);

            await _unitOfWork.SaveChanges();
        }