Exemplo n.º 1
0
        public void ProcessScenarioCampaignMetrics(Guid runId, Guid scenarioId, IEnumerable <Recommendation> scenarioRecommendations)
        {
            try
            {
                var scenarioCampaignMetrics = new ScenarioCampaignMetric
                {
                    Id      = scenarioId,
                    Metrics = GenerateCampaignKPIs(runId, scenarioId, scenarioRecommendations)
                };

                _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0,
                                                                                                     0, $"Start insert of scenario campaign metrics. ScenarioId: {scenarioId} Count: {scenarioCampaignMetrics.Metrics.Count}"));

                using (var innerScope = _repositoryFactory.BeginRepositoryScope())
                {
                    var scenarioCampaignMetricRepository = innerScope.CreateRepository <IScenarioCampaignMetricRepository>();
                    scenarioCampaignMetricRepository.AddOrUpdate(scenarioCampaignMetrics);
                    scenarioCampaignMetricRepository.SaveChanges();
                }

                _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0,
                                                                                                     0, $"End insert of scenario campaign metrics. ScenarioId: {scenarioId} Count: {scenarioCampaignMetrics.Metrics.Count}"));
            }
            catch (Exception e)
            {
                _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForException(0, 0, $"Error while processing scenario campaign metrics. ScenarioId: {scenarioId}", e));
            }
        }
Exemplo n.º 2
0
        public void AddOrUpdate(ScenarioCampaignMetric scenarioCampaignMetrics)
        {
            List <ScenarioCampaignMetricEntity> externalEntities = _mapper.Map <List <ScenarioCampaignMetricEntity> >(scenarioCampaignMetrics);

            List <ScenarioCampaignMetricEntity> entities = _dbContext.Query <ScenarioCampaignMetricEntity>()
                                                           .Where(e => e.ScenarioId == scenarioCampaignMetrics.Id)
                                                           .ToList();

            if (!entities.Any())
            {
                _dbContext.BulkInsertEngine.BulkInsert(externalEntities, new BulkInsertOptions()
                {
                    BatchSize = 600000
                });
            }
            else
            {
                var addedEntities   = externalEntities.Where(x => !entities.Contains(x)).ToArray();
                var deletedEntities = entities.Where(x => !externalEntities.Contains(x)).ToArray();

                _dbContext.RemoveRange(deletedEntities);
                _dbContext.AddRange(addedEntities);
            }
        }