spGetAppealListsSummary
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ProjectAppealID | int | IN |
Definition
Copy
CREATE procedure dbo.spGetAppealListsSummary
@ProjectAppealID int
AS
DECLARE @JobData TABLE(ID int, Constituents int, NotAddressed int, OptOut int,InvalidAccount int, InactiveAccount int)
DECLARE @RecipientData TABLE(ID int, Queued int, Sent int, Opened int, DSN int,SPAMCOMPLAINT int)
DECLARE @DonationData TABLE(ID int, DonationMethod int, Donations int, DonationGiftAmount int)
DECLARE @EventData TABLE(ID int, Events int, EventGiftAmount int)
DECLARE @MembershipData TABLE(ID int, Memberships int, MembershipGiftAmount int)
INSERT INTO @JobData (ID , Constituents, NotAddressed, OptOut,InvalidAccount,InactiveAccount)
SELECT epael.[ID], SUM(j.NumberRequested),
SUM(j.NumberAbsentAddress),
SUM(j.NumberOptedOut),
SUM(j.NumberInvalidAccount),
SUM(isnull(j.NumberInactiveAccount,0))
FROM EmailJob j inner join Email e on j.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
INNER JOIN EmailProjectAppeal_EmailList epael on epale.[EmailProjectAppealListID] = epael.[ID]
WHERE (epale.EmailProjectAppealID = @ProjectAppealID) AND j.Status IN
(4,6,7,14)
AND epale.Deleted = 0 AND epael.AppealListType = 1
GROUP BY epael.[ID]
IF EXISTS(SELECT TOP 1 [ID] FROM @JobData)
BEGIN
----RecipientData------------------------------------------------------------------------------------------------------
---------------
INSERT INTO @RecipientData (ID, Queued, Sent, Opened, DSN,SPAMCOMPLAINT)
SELECT epael.ID, COUNT(r.EmailAddress),
SUM(case r.Sent when 1 then 1 else 0 end),
SUM(case r.Opened when 1 then 1 else 0 end),
SUM(case when r.DSNed =1 and r.RecentDSNCategory <>112 then 1 else 0 end),
SUM(case when r.DSNed =1 and r.RecentDSNCategory =112 then 1 else 0 end)
FROM Email e
INNER JOIN EmailJob j on j.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
INNER JOIN EmailProjectAppeal_EmailList epael on epale.[EmailProjectAppealListID] = epael.[ID]
LEFT OUTER JOIN EmailJob_Recipient as r on r.EmailJobID = j.ID AND r.[Current] = 1
WHERE epael.EmailProjectAppealID = @ProjectAppealID AND epael.AppealListType = 1
AND epale.Deleted = 0
GROUP BY epael.ID
-----DonataData--------------------------------
------------------------------------------------------------------------------------
INSERT INTO @DonationData (ID, DonationMethod, Donations, DonationGiftAmount)
SELECT epael.[ID], et.[GiftPaymentMethod],
count(et.DonationTransactionsID), sum(et.GiftAmount)
FROM DonationTransactions et
INNER JOIN Email e on et.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
INNER JOIN EmailProjectAppeal_EmailList epael on epale.[EmailProjectAppealListID] = epael.[ID]
WHERE epael.EmailProjectAppealID = @ProjectAppealID AND epael.AppealListType = 1
and et.isdeleted = 0
and et.Status = 1
GROUP BY et.[GiftPaymentMethod], epael.[ID]
-----EventData-----------------------------------
---------------------------------------------------------------------------------
INSERT INTO @EventData(ID, Events, EventGiftAmount)
SELECT epael.[ID], count(et.EventTransactionsID), sum(et.GiftAmount)
FROM EventTransactions et
INNER JOIN Email e on et.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
INNER JOIN EmailProjectAppeal_EmailList epael on epale.[EmailProjectAppealListID] = epael.[ID]
WHERE epael.EmailProjectAppealID = @ProjectAppealID AND epael.AppealListType = 1
and et.isdeleted = 0
and et.Status = 1
GROUP BY epael.ID
-----MembershipData--------------------------------------------------------------------------------------------------
------------------
INSERT INTO @MembershipData(ID, Memberships, MembershipGiftAmount)
SELECT epael.[ID], count(mt.ID), sum(mt.GiftAmount)
FROM MembershipTransactions mt
INNER JOIN Email e on mt.EmailID = e.[ID]
INNER JOIN emailprojectappeal_ListEmail epale on e.ProjectAppealListEmailID = epale.[ID]
INNER JOIN EmailProjectAppeal_EmailList epael on epale.[EmailProjectAppealListID] = epael.[ID]
WHERE epael.EmailProjectAppealID = @ProjectAppealID AND epael.AppealListType = 1
and mt.isdeleted = 0
and mt.Status = 1
GROUP BY epael.ID
END
SELECT epael.[ID], el.[Name], epael.[AppealListType], Constituents, NotAddressed, OptOut,InvalidAccount,
DonationMethod, Donations, (ISNULL(EventGiftAmount,0) + ISNULL(MembershipGiftAmount,0) + ISNULL(DonationGiftAmount,0)) as GiftAmount,
Sent, (Queued - Sent) as UnSent, Opened, DSN ,InactiveAccount,SpamComplaint
FROM @JobData jd
INNER JOIN @RecipientData rd on jd.[ID] = rd.[ID]
LEFT OUTER JOIN @DonationData dd on rd.[ID] = dd.[ID]
LEFT OUTER JOIN @EventData ed on rd.[ID] = ed.[ID]
LEFT OUTER JOIN @MembershipData md on rd.[ID] = md.[ID]
RIGHT OUTER JOIN EmailProjectAppeal_Emaillist epael on rd.id = epael.id
INNER JOIN EMailList el
on epael.EmaillistID = el.ID
WHERE epael.[EmailProjectAppealID] = @ProjectAppealID AND epael.[AppealListType] = 1