コード例 #1
0
        private List <ScenarioCampaignMetricItem> GenerateCampaignKPIs()
        {
            var kpis       = new List <ScenarioCampaignMetricItem>();
            var calculator = new ScenarioCampaignKPIsCalculator();

            foreach (var campaign in _campaigns)
            {
                var nominalPrice = _spots
                                   .Where(s =>
                                          !s.ClientPicked &&
                                          !s.IsUnplaced &&
                                          s.ExternalCampaignNumber == campaign.ExternalId)
                                   .Sum(s => s.NominalPrice);

                var campaignRecommendations = _recommendations.Where(r =>
                                                                     r.ExternalCampaignNumber == campaign.ExternalId);

                kpis.Add(calculator.CalculateCampaignKPIs(campaign, campaignRecommendations, nominalPrice));
            }

            return(kpis);
        }
コード例 #2
0
        private List <ScenarioCampaignMetricItem> GenerateCampaignKPIs(Guid runId, Guid scenarioId, IEnumerable <Recommendation> scenarioRecommendations)
        {
            _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0, String.Format("Executing Campaign KPI processing (RunID={0}, ScenarioID={1})", runId, scenarioId)));

            var kpis       = new List <ScenarioCampaignMetricItem>();
            var calculator = new ScenarioCampaignKPIsCalculator();

            var recommendations = scenarioRecommendations
                                  .GroupBy(x => x.ExternalCampaignNumber)
                                  .ToDictionary(x => x.Key, x => x.ToList());

            foreach (var campaign in _campaignRepository.GetAllFlat())
            {
                var nominalPrice            = _spotRepository.GetNominalPriceByCampaign(campaign.ExternalId);
                var campaignRecommendations = recommendations.ContainsKey(campaign.ExternalId)
                    ? recommendations[campaign.ExternalId]
                    : Enumerable.Empty <Recommendation>();

                kpis.Add(calculator.CalculateCampaignKPIs(campaign, campaignRecommendations, nominalPrice));
            }

            _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0, String.Format("Executed Campaign KPI processing (RunID={0}, ScenarioID={1})", runId, scenarioId)));
            return(kpis);
        }