public MultistepActionStepResult Step(int step) { var settings = HttpContext.Session.GetValue <ImportSettings>(HttpContextSession.ImportSettingsSessionKey); Ensure.NotNull(settings); var reader = new CsvReader(SiteId, ContentId, settings); var result = new MultistepActionStepResult(); using (var ts = QPConfiguration.CreateTransactionScope(IsolationLevel.ReadCommitted)) { using (new QPConnectionScope()) { try { reader.Process(step, ItemsPerStep, out var processedItemsCount); var lastStep = step * ItemsPerStep >= reader.ArticleCount - ItemsPerStep; if (lastStep) { ContentRepository.UpdateContentModification(ContentId); reader.PostUpdateM2MRelationAndO2MRelationFields(); } settings = HttpContext.Session.GetValue <ImportSettings>(HttpContextSession.ImportSettingsSessionKey); var logData = new ImportArticlesLogData() { Id = settings.Id, InsertedArticleIds = settings.InsertedArticleIds.ToArray(), UpdatedArticleIds = settings.UpdatedArticleIds.ToArray(), ImportAction = (CsvImportMode)settings.ImportAction }; ImportLogger.Trace() .Message("Import articles step: {step}.", step) .Property("result", logData) .Property("customerCode", QPContext.CurrentCustomerCode) .Write(); result.ProcessedItemsCount = processedItemsCount; result.TraceResult = reader.GetTraceResult(); result.AdditionalInfo = $"{MultistepActionStrings.InsertedArticles}: {settings.InsertedArticleIds.Count}; {MultistepActionStrings.UpdatedArticles}: {settings.UpdatedArticleIds.Count}."; } catch (Exception ex) { throw new ImportException(string.Format(ImportStrings.ImportInterrupted, ex.Message, reader.LastProcessed), ex, settings); } } ts.Complete(); } return(result); }
public override void TearDown() { var importSettings = HttpContext.Session.GetValue <ImportSettings>(HttpContextSession.ImportSettingsSessionKey); RemoveFileFromTemp(); var logData = new ImportArticlesLogData() { Id = importSettings.Id, InsertedArticleIds = importSettings.InsertedArticleIds.ToArray(), UpdatedArticleIds = importSettings.UpdatedArticleIds.ToArray(), ImportAction = (CsvImportMode)importSettings.ImportAction }; ImportLogger.Info() .Message("Articles import was finished") .Property("result", logData) .Property("customerCode", QPContext.CurrentCustomerCode) .Write(); HttpContext.Session.Remove(HttpContextSession.ImportSettingsSessionKey); base.TearDown(); }