diff --git a/Doppler.ReportingApi/Infrastructure/CampaignRepository.cs b/Doppler.ReportingApi/Infrastructure/CampaignRepository.cs index 835d51f..85e2ce8 100644 --- a/Doppler.ReportingApi/Infrastructure/CampaignRepository.cs +++ b/Doppler.ReportingApi/Infrastructure/CampaignRepository.cs @@ -130,6 +130,7 @@ FROM dbo.usertimezone timezone ,dateadd(MINUTE, @timezone, RPT.[UTCScheduleDate]) AS [UTCScheduleDate] ,RPT.[FromEmail] ,RPT.[CampaignType] + ,RPT.[IdTestAB] ,SUM(RPT.[Subscribers]) [Subscribers] ,SUM(RPT.[Sent]) [Sent] ,CASE @@ -176,6 +177,7 @@ END AS [SpamRate] ,C.[UTCScheduleDate] ,C.[FromEmail] ,C.[CampaignType] + ,C.[IdTestAB] ,ISNULL(C.[AmountSentSubscribers],0) [Subscribers] ,(ISNULL(C.[DistinctOpenedMailCount],0) + ISNULL(C.[UnopenedMailCount],0)) AS [Sent] ,ISNULL(C.[DistinctOpenedMailCount],0) [Opens] @@ -226,7 +228,12 @@ AND C.[Status] IN (5,9) AND (@startDate IS NULL OR C.[UTCScheduleDate] >= @startDate) AND (@endDate IS NULL OR C.[UTCScheduleDate] <= @endDate) AND (@campaignName IS NULL OR LOWER(LTRIM(RTRIM(C.[Name]))) LIKE '%' + LOWER(LTRIM(RTRIM(@campaignName))) + '%') - AND (@campaignType IS NULL OR C.[CampaignType] LIKE @campaignType) + AND ( + @campaignType IS NULL + OR (LTRIM(RTRIM(@campaignType)) = '') + OR (@campaignType = 'TEST_AB' AND C.IdTestAB IS NOT NULL) + OR (C.CampaignType = @campaignType AND C.IdTestAB IS NULL) + ) AND (@fromEmail IS NULL OR LOWER(LTRIM(RTRIM(C.[FromEmail]))) LIKE LOWER(LTRIM(RTRIM(@fromEmail)))) AND C.[IdTestCampaign] IS NULL AND C.[IdScheduledTask] IS NULL @@ -242,6 +249,7 @@ GROUP BY RPT.[IdUser] ,RPT.[UTCScheduleDate] ,RPT.[FromEmail] ,RPT.[CampaignType] + ,RPT.[IdTestAB] ,RPT.[LabelName] ,RPT.[LabelColour] ORDER BY RPT.[UTCScheduleDate] DESC @@ -274,7 +282,12 @@ AND C.[Status] IN (5,9) AND (@startDate IS NULL OR C.[UTCScheduleDate] >= @startDate) AND (@endDate IS NULL OR C.[UTCScheduleDate] <= @endDate) AND (@campaignName IS NULL OR LOWER(LTRIM(RTRIM(C.[Name]))) LIKE '%' + LOWER(LTRIM(RTRIM(@campaignName))) + '%') - AND (@campaignType IS NULL OR C.[CampaignType] LIKE @campaignType) + AND ( + @campaignType IS NULL + OR (LTRIM(RTRIM(@campaignType)) = '') + OR (@campaignType = 'TEST_AB' AND C.IdTestAB IS NOT NULL) + OR (C.CampaignType = @campaignType AND C.IdTestAB IS NULL) + ) AND (@fromEmail IS NULL OR LOWER(LTRIM(RTRIM(C.[FromEmail]))) LIKE LOWER(LTRIM(RTRIM(@fromEmail)))) AND C.[IdTestCampaign] IS NULL AND C.[IdScheduledTask] IS NULL diff --git a/Doppler.ReportingApi/Models/SentCampaignsMetrics.cs b/Doppler.ReportingApi/Models/SentCampaignsMetrics.cs index 54d7dc3..9552de4 100644 --- a/Doppler.ReportingApi/Models/SentCampaignsMetrics.cs +++ b/Doppler.ReportingApi/Models/SentCampaignsMetrics.cs @@ -34,6 +34,12 @@ public class SentCampaignMetrics /// public string CampaignType { get; set; } + /// + /// Identifier of the A/B test associated with the campaign. + /// Null or zero when the campaign is not part of an A/B test. + /// + public int? IdTestAB { get; set; } + /// /// Total number of subscribers targeted by the campaign. ///