USP_GENERALPURPOSEEMAIL_POLLQUEUE

Polls the General Purpose Queue for emails to process.

Parameters

Parameter Parameter Type Mode Description
@THREADID uniqueidentifier IN
@INSTANCEID uniqueidentifier IN
@ENTERPRISE int IN
@NETCOMMUNITY int IN
@EXTERNAL int IN
@NEWSLETTER int IN
@FUNDRAISER int IN
@CAMPAIGN int IN
@BLAST int IN
@CHAPTER int IN
@PERSONALBLAST int IN
@PROJECTAPPEALBLAST int IN
@PROJECTAPPEALSEED int IN
@SIGNUPNOTIFICATIONS int IN
@DONATIONNOTIFICATIONS int IN
@PAGESHARING int IN
@SITENOTIFICATIONS int IN
@ECARDS int IN
@DIRECTMARKETING int IN
@TESTING int IN

Definition

Copy


      CREATE procedure dbo.USP_GENERALPURPOSEEMAIL_POLLQUEUE
      (
        @THREADID uniqueidentifier,
        @INSTANCEID uniqueidentifier,
        @ENTERPRISE integer,
        @NETCOMMUNITY integer,
        @EXTERNAL integer,
        @NEWSLETTER integer,
        @FUNDRAISER integer,
        @CAMPAIGN integer,
        @BLAST integer,
        @CHAPTER integer,
        @PERSONALBLAST integer,
        @PROJECTAPPEALBLAST integer,
        @PROJECTAPPEALSEED integer,
        @SIGNUPNOTIFICATIONS integer,
        @DONATIONNOTIFICATIONS integer,
        @PAGESHARING integer,
        @SITENOTIFICATIONS integer,
        @ECARDS integer,
        @DIRECTMARKETING integer,
        @TESTING integer
      )
      as
      begin
         set nocount on;

         -- we need to stop a second chunk from being grabbed prior to the first chunk being submitted to shared services.  Otherwise

         -- a chunk can be sent to shared services with Guid.Empty as the external job id, and this will throw an error, and the emails

         -- in the chunk will not be sent.


        begin try
           begin tran POLLQUEUE  

                update dbo.EMAILQUEUEGENERALPURPOSE set THREADID = @THREADID, FIRSTPOLLSTARTED = 1
                where (THREADID = '00000000-0000-0000-0000-000000000000') --or CHUNKPROCESSING > 0) and 

                    and (EXTERNALJOBIDENTITY <> '00000000-0000-0000-0000-000000000000' or FIRSTPOLLSTARTED = 0) -- cannot multi-thread initial submission because chunks require a valid ext. job id.

                    and PROCESSAFTERDATE <= getutcdate() and (SOURCE in (@ENTERPRISE, @NETCOMMUNITY, @EXTERNAL))
                    and (CATEGORY in (@NEWSLETTER, @FUNDRAISER, @CAMPAIGN, @BLAST, @CHAPTER, @PERSONALBLAST, @PROJECTAPPEALBLAST
                                    @PROJECTAPPEALSEED, @SIGNUPNOTIFICATIONS, @DONATIONNOTIFICATIONS, @PAGESHARING, @SITENOTIFICATIONS
                                    @ECARDS, @DIRECTMARKETING, @TESTING)); 

                update dbo.EMAILSTATUSGENERALPURPOSE set INTERNALJOBIDENTITY = @INSTANCEID, CLIENTPROCESSSTARTDATE = isnull(CLIENTPROCESSSTARTDATE, getutcdate()) where EMAILQUEUEGENERALPURPOSEID in (select ID from dbo.EMAILQUEUEGENERALPURPOSE where THREADID = @THREADID);

                select E.ID, V.VIEWNAME, E.MERGEDATASET, E.EMAILHEADER, CONTENTTEXT, CONTENTHTML, THREADID, CHUNKPROCESSING, SOURCE, E.RETRYNUMBER, MAXRETRYNUMBER, DATEADDEDTOQUEUE, E.EXTERNALJOBIDENTITY, EMAILSTATUSGENERALPURPOSE.UNIQUEIDFIELDNAME, MERGEROWSPROCESSED,EMAILSTATUSGENERALPURPOSE.EMAILADDRESSFIELDNAME,EMAILSTATUSGENERALPURPOSE.EMAILDISPLAYNAMEFIELDNAME, EMAILSTATUSGENERALPURPOSE.MERGETOKEN, EMAILSTATUSGENERALPURPOSE.PRIORITY, E.PROCESSAFTERDATE, CATEGORY from dbo.EMAILQUEUEGENERALPURPOSE E
                inner join EMAILSTATUSGENERALPURPOSE on EMAILSTATUSGENERALPURPOSE.EMAILQUEUEGENERALPURPOSEID = E.ID
                left join dbo.SQLVIEWCATALOG V on E.MERGESQLVIEWID = V.ID
                where THREADID = @THREADID;  

            commit tran POLLQUEUE;
        end try
        begin catch
            if XACT_STATE() <> 0
                rollback tran POLLQUEUE;

            exec dbo.USP_RAISE_ERROR;
        end catch                        
      end