Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }