spEmail_QueryTransTotals

Parameters

Parameter Parameter Type Mode Description
@BeginDate datetime IN
@EndDate datetime IN
@QueryType int IN
@EmailType int IN

Definition

Copy
CREATE    PROCEDURE [dbo].[spEmail_QueryTransTotals]

            @BeginDate datetime,
            @EndDate datetime,
            @QueryType int,
            @EmailType int

            AS

            DECLARE @Table table 
                (
                EmailID int
                EmailName varchar(255),
                EmailDate datetime,
                EmailType int,
                EmailTemplateID int,
                TransCount int
                TransGiftAmount money, 
                TransGiftCurrencyType int
                )

                if @QueryType = 0 
                --Donations
                    begin    

                        INSERT INTO @Table (EmailID, EmailName, EmailDate, EmailType,    EmailTemplateID, TransCount, TransGiftAmount, TransGiftCurrencyType)

                        SELECT 
                            email.ID EmailID, 
                            email.Name 'EmailName',
                            ejob.CreateDate,
                            email.Type,
                            email.EmailTemplateID,

                            count(dt.DonationTransactionsID), 
                            ISNULL(sum(dt.GiftAmount),0),

                            dt.GiftCurrencyType

                        FROM            
                            dbo.Email email
                            LEFT JOIN DonationTransactions dt ON email.ID = dt.EmailID
                            INNER JOIN dbo.EmailJob ejob ON email.ID = ejob.EmailID

                        WHERE
                            ejob.CreateDate >= @BeginDate AND ejob.CreateDate <= @EndDate
                            AND dt.Status = 1                

                        GROUP BY email.ID, email.Name, dt.GiftCurrencyType, ejob.CreateDate, email.Type, email.EmailTemplateID       

                        ORDER BY  ejob.CreateDate

                    end

                if @QueryType = 1 
                --Event Registrations
                    begin

                        INSERT INTO @Table (EmailID, EmailName, EmailDate, EmailType, EmailTemplateID, TransCount, TransGiftAmount, TransGiftCurrencyType)

                        SELECT 
                            email.ID EmailID, 
                            email.Name 'EmailName',
                            ejob.CreateDate,
                            email.Type,
                            email.EmailTemplateID,

                            count(et.EventTransactionsID), 
                            ISNULL(sum(et.GiftAmount),0),

                            et.GiftCurrencyType

                        FROM            
                            dbo.Email email
                            LEFT JOIN EventTransactions et ON email.ID = et.EmailID
                            INNER JOIN dbo.EmailJob ejob ON email.ID = ejob.EmailID

                        WHERE
                            ejob.CreateDate >= @BeginDate AND ejob.CreateDate <= @EndDate                
                            AND et.Status = 1

                        GROUP BY email.ID, email.Name, et.GiftCurrencyType, ejob.CreateDate, email.Type, email.EmailTemplateID       

                        ORDER BY  ejob.CreateDate

                    end

                if @QueryType = 2
                --Memberships    
                    begin

                        INSERT INTO @Table (EmailID, EmailName, EmailDate, EmailType, EmailTemplateID, TransCount, TransGiftAmount, TransGiftCurrencyType)

                        SELECT 
                            email.ID EmailID, 
                            email.Name 'EmailName',
                            ejob.CreateDate,
                            email.Type,
                            email.EmailTemplateID,

                            count(mt.ID), 
                            ISNULL(sum(mt.GiftAmount),0),

                            mt.GiftCurrencyType

                        FROM            
                            dbo.Email email
                            LEFT JOIN MembershipTransactions mt ON email.ID = mt.EmailID
                            INNER JOIN dbo.EmailJob ejob ON email.ID = ejob.EmailID

                        WHERE
                            ejob.CreateDate >= @BeginDate AND ejob.CreateDate <= @EndDate                
                            AND mt.Status = 1

                        GROUP BY email.ID, email.Name, mt.GiftCurrencyType, ejob.CreateDate, email.Type, email.EmailTemplateID       

                        ORDER BY  ejob.CreateDate

                    end


                DECLARE @SelectTable table 
                (
                EmailID int
                EmailName varchar(255),
                EmailDate datetime,
                EmailType int,
                EmailTemplateID int,
                TransCount int
                TransGiftAmount money, 
                TransGiftCurrencyType int
                )


                if @EmailType = -1
                    begin
                    INSERT INTO @SelectTable (EmailID, EmailName, EmailDate, EmailType, EmailTemplateID, TransCount, TransGiftAmount, TransGiftCurrencyType)
                    SELECT * FROM @Table
                    end
                else
                    begin
                    INSERT INTO @SelectTable (EmailID, EmailName, EmailDate, EmailType, EmailTemplateID, TransCount, TransGiftAmount, TransGiftCurrencyType)
                    SELECT * FROM @Table 
                        WHERE (EmailType = @EmailType
                            or (@EmailType = 7 and EmailType in (7,8,9)) 

                    end


                --ResultSet
                SELECT * FROM @SelectTable


                --ResultSet1
                SELECT DISTINCT TransGiftCurrencyType FROM @Table WHERE TransGiftCurrencyType IS NOT NULL