private IEnumerable<ResultMessageViewModel> PersistESDATData(ESDATDataToImport esdatDataToImport, IDataImporter importer) { var extractedResults = importer.Extract<ESDATModel>(esdatDataToImport); if (!extractedResults.IsExtractedSuccess) { var failResults = from parsingResult in ImportResultHelper.FilterWarningAndErrorResult(extractedResults.AllParsingResults) select new ResultMessageViewModel ( parsingResult.Level.ToString(), parsingResult.Message ); return failResults; } else { var esdatModel = extractedResults.ExtractedEntities.First(); var allResults = (from parsingResult in extractedResults.AllParsingResults select new ResultMessageViewModel(parsingResult.Level.ToString(), parsingResult.Message)).ToList(); var duplicateChecker = new ODM2DuplicateChecker(_dbContext); var convertResult = new List<IResult>(); var sampleCollectionFactory = new ESDATSampleCollectionMapperFactory(duplicateChecker, _wqDefaultValueProvider, wayToHandleNewData, convertResult); var chemistryFactory = new ESDATChemistryMapperFactory(duplicateChecker, _wqDefaultValueProvider, wayToHandleNewData, convertResult); var mapper = new SampleCollectionActionMapper(duplicateChecker, sampleCollectionFactory, _wqDefaultValueProvider, chemistryFactory, wayToHandleNewData, convertResult); var converter = new ESDATConverter(mapper); var convertResults = converter.Convert(esdatModel); var convertResultViewModels = from converResult in convertResults select new ResultMessageViewModel(converResult.Level.ToString(), converResult.Message); allResults.AddRange(convertResultViewModels.ToList()); var convertParsingResult = convertResults.Where(x => x is IParsingResult).FirstOrDefault(); if (convertParsingResult == null) { var failResult = new ResultMessageViewModel(ResultMessageViewModel.RESULT_LEVEL_ERROR, "System is not able to find the converted value from the converted results."); allResults.Add(failResult); } else { var action = (Action)((IParsingResult)convertParsingResult).Value; _dbContext.Add<Hatfield.EnviroData.Core.Action>(action); _dbContext.SaveChanges(); allResults.Add(new ResultMessageViewModel ( ResultMessageViewModel.RESULT_LEVEL_INFO, "Import success" )); } return allResults; } }
private IEnumerable <ResultMessageViewModel> PersistESDATData(ESDATDataToImport esdatDataToImport, IDataImporter importer) { var extractedResults = importer.Extract <ESDATModel>(esdatDataToImport); if (!extractedResults.IsExtractedSuccess) { var failResults = from parsingResult in ImportResultHelper.FilterWarningAndErrorResult(extractedResults.AllParsingResults) select new ResultMessageViewModel ( parsingResult.Level.ToString(), parsingResult.Message ); return(failResults); } else { var esdatModel = extractedResults.ExtractedEntities.First(); var allResults = (from parsingResult in extractedResults.AllParsingResults select new ResultMessageViewModel(parsingResult.Level.ToString(), parsingResult.Message)).ToList(); var duplicateChecker = new ODM2DuplicateChecker(_dbContext); var convertResult = new List <IResult>(); var sampleCollectionFactory = new ESDATSampleCollectionMapperFactory(duplicateChecker, _wqDefaultValueProvider, wayToHandleNewData, convertResult); var chemistryFactory = new ESDATChemistryMapperFactory(duplicateChecker, _wqDefaultValueProvider, wayToHandleNewData, convertResult); var mapper = new SampleCollectionActionMapper(duplicateChecker, sampleCollectionFactory, _wqDefaultValueProvider, chemistryFactory, wayToHandleNewData, convertResult); var converter = new ESDATConverter(mapper); var convertResults = converter.Convert(esdatModel); var convertResultViewModels = from converResult in convertResults select new ResultMessageViewModel(converResult.Level.ToString(), converResult.Message); allResults.AddRange(convertResultViewModels.ToList()); var convertParsingResult = convertResults.Where(x => x is IParsingResult).FirstOrDefault(); if (convertParsingResult == null) { var failResult = new ResultMessageViewModel(ResultMessageViewModel.RESULT_LEVEL_ERROR, "System is not able to find the converted value from the converted results."); allResults.Add(failResult); } else { var action = (Action)((IParsingResult)convertParsingResult).Value; _dbContext.Add <Hatfield.EnviroData.Core.Action>(action); _dbContext.SaveChanges(); allResults.Add(new ResultMessageViewModel ( ResultMessageViewModel.RESULT_LEVEL_INFO, "Import success" )); } return(allResults); } }