Esempio n. 1
0
        private void PreGenerateReport(IReadOnlyCollection <ScenarioCampaignFailure> data, Run run, Scenario scenario)
        {
            _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0,
                                                                                                 0, $"Start scenario campaign failures report generation. ScenarioId: {scenario.Id} Count: {data.Count}"));
            try
            {
                var reportService = new ScenarioCampaignFailuresReportCreator();
                var reportData    = new ScenarioCampaignFailuresDataSnapshot();
                var fileName      = ScenarioCampaignFailuresReportCreator.GetFilePath(scenario.Name, run.ExecuteStartedDateTime.Value, scenario.Id);

                var failureTypes = data.Select(c => c.FailureType)
                                   .Distinct()
                                   .ToList();

                DayOfWeek tenantStartDayOfWeek;
                using (var internalScope = _repositoryFactory.BeginRepositoryScope())
                {
                    reportData.Campaigns  = internalScope.CreateRepository <ICampaignRepository>().GetAllFlat();
                    reportData.FaultTypes = internalScope.CreateRepository <IFunctionalAreaRepository>().FindFaultTypes(failureTypes);
                    tenantStartDayOfWeek  = internalScope.CreateRepository <ITenantSettingsRepository>().GetStartDayOfWeek();
                }

                using (var reportStream = reportService.GenerateReport(data, reportData, tenantStartDayOfWeek))
                {
                    _ = _cloudStorage.Upload(new S3UploadComment
                    {
                        BucketName          = _awsSettings.S3Bucket,
                        DestinationFilePath = fileName,
                        FileStream          = reportStream
                    });
                }
            }
            catch (Exception e)
            {
                _auditEventRepository.Insert(
                    AuditEventFactory.CreateAuditEventForException(
                        0,
                        0,
                        $"Error while generating report for scenario campaign failures. ScenarioId: {scenario.Id}", e
                        )
                    );
                throw;
            }
            _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0,
                                                                                                 0, $"End scenario campaign failures report generation. ScenarioId: {scenario.Id}"));
        }
        public (ScenarioCampaignFailuresDataSnapshot snapshot, IReadOnlyCollection <ScenarioCampaignFailure> data) GenerateScenarioCampaignFailuresDataShapshot(Guid scenarioId)
        {
            var failures = _scenarioCampaignFailureRepository.FindByScenarioId(scenarioId).ToList();

            if (failures.Count == 0)
            {
                return(null, null);
            }

            var failureTypeIds = failures
                                 .Select(r => r.FailureType)
                                 .Distinct();

            var campaignIds = failures
                              .Select(r => r.ExternalCampaignId)
                              .Distinct();

            var snapshot = new ScenarioCampaignFailuresDataSnapshot();

            snapshot.Campaigns  = _campaignRepository.FindByRefs(campaignIds.ToList());
            snapshot.FaultTypes = _functionalAreaRepository.FindFaultTypes(failureTypeIds.ToList());

            return(snapshot, failures);
        }