public static void PopulatePrePostCampaignKPIs(ICampaignKpiData campaignData, ScenarioCampaignResultItem source, ScenarioCampaignResultModel result)
        {
            var totalNominalValue               = source.NominalValue + campaignData.NominalValue;
            var revenueBudget                   = campaignData.RevenueBudget ?? 0;
            var totalPayback                    = campaignData.Payback ?? 0;
            var differenceValueDelivered        = totalNominalValue - revenueBudget;
            var differenceValueDeliveredPayback = totalNominalValue - revenueBudget - totalPayback;
            var dayPartRevenueWithPayback       = revenueBudget + totalPayback;

            result.ZeroRatedSpots                     = (int)source.ZeroRatedSpots;
            result.NominalValue                       = source.NominalValue;
            result.TotalNominalValue                  = totalNominalValue;
            result.RevenueBudget                      = revenueBudget;
            result.TotalPayback                       = totalPayback;
            result.DifferenceValueDelivered           = differenceValueDelivered;
            result.DifferenceValueDeliveredPayback    = differenceValueDeliveredPayback;
            result.DifferenceValueDeliveredPercentage = revenueBudget == 0
                ? 0
                : Math.Round((differenceValueDelivered / revenueBudget) * 100, 2);
            result.DifferenceValueDeliveredPercentagePayback = dayPartRevenueWithPayback == 0
                ? 0
                : Math.Round((differenceValueDeliveredPayback / dayPartRevenueWithPayback) * 100, 2);
        }
Exemplo n.º 2
0
 /// <summary>Resolves the campaign.</summary>
 /// <param name="item">The item.</param>
 /// <returns></returns>
 protected abstract Campaign ResolveCampaign(ScenarioCampaignResultItem item);
Exemplo n.º 3
0
 /// <summary>
 /// Resolves PayPart for pre-post KPI calculation
 /// </summary>
 /// <param name="campaign"></param>
 /// <param name="item"></param>
 /// <returns></returns>
 /// <remarks>Example of DowTime string inside DayPartName: "2100-2659(Mon-Fri)"</remarks>
 protected abstract ICampaignKpiData ResolveDayPartKpiModel(Campaign campaign, ScenarioCampaignResultItem item);
Exemplo n.º 4
0
 static bool IsSalesAreaNameEqual(SalesAreaGroup salesAreaGroup,
                                  ScenarioCampaignResultItem scenarioCampaignResultItem) =>
 salesAreaGroup?.SalesAreas?.Any(sa =>
                                 String.Equals(sa, scenarioCampaignResultItem.SalesAreaName,
                                               StringComparison.OrdinalIgnoreCase)) ?? false;