USP_DATAFORMTEMPLATE_EDIT_SELECTIVECOMMUNICATIONLETTERPREPROCESS

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@LETTEROPTIONS xml IN
@EMAILPROCESSINGTYPE tinyint IN
@EMAILDATETIME datetime IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_SELECTIVECOMMUNICATIONLETTERPREPROCESS (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @LETTEROPTIONS xml,
    @EMAILPROCESSINGTYPE tinyint,
    @EMAILDATETIME datetime
)
as
    set nocount on;

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

    declare @CURRENTDATE datetime = getdate();

    begin try

        declare @SEGMENTATIONID uniqueidentifier;        
        declare @HASEMAIL bit = 0;

        select
            @SEGMENTATIONID = [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID]
        from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
        where [MKTSEGMENTATIONACTIVATEPROCESS].[ID] = @ID;

        exec dbo.USP_SELECTIVECOMMUNICATIONLETTERS_GETLETTEROPTIONS_UPDATEFROMXML @SEGMENTATIONID, @LETTEROPTIONS, @CHANGEAGENTID, @CURRENTDATE;

        select
            @HASEMAIL = 
                case 
                    when exists(
                            select ID 
                            from dbo.COMMUNICATIONLETTER 
                            where COMMUNICATIONLETTER.SEGMENTATIONID = MKTSEGMENTATIONACTIVATEPROCESS.SEGMENTATIONID 
                                and COMMUNICATIONLETTER.RUNNOW = 1
                                and COMMUNICATIONLETTER.CHANNELCODE > 0
                        ) then 1 
                    else 0 
                end
        from dbo.[MKTSEGMENTATIONACTIVATEPROCESS]
        where [MKTSEGMENTATIONACTIVATEPROCESS].[ID] = @ID;

        if @HASEMAIL = 1
            begin
                if exists (select [ID] from dbo.[APPEALMAILINGACTIVATEEMAILJOBSCHEDULE] where [ID] = @ID)                
                    update dbo.[APPEALMAILINGACTIVATEEMAILJOBSCHEDULE] set
                        [SCHEDULETYPECODE] = @EMAILPROCESSINGTYPE,
                        [EMAILJOBSTART] = @EMAILDATETIME,
                        [EMAILJOBSTARTWITHOFFSET] = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@EMAILDATETIME, 0),
                        [CHANGEDBYID] = @CHANGEAGENTID,
                        [DATECHANGED] = @CURRENTDATE
                    where ID = @ID;                

                else
                    insert into dbo.[APPEALMAILINGACTIVATEEMAILJOBSCHEDULE]
                    (
                        [ID],
                        [SCHEDULETYPECODE],
                        [EMAILJOBSTART],
                        [EMAILJOBSTARTWITHOFFSET],
                        [ADDEDBYID],
                        [CHANGEDBYID],
                        [DATEADDED],
                        [DATECHANGED]
                    ) values (
                        @ID,
                        @EMAILPROCESSINGTYPE,
                        @EMAILDATETIME,
                        dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@EMAILDATETIME, 0),
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    );
            end
        else
            delete from dbo.[APPEALMAILINGACTIVATEEMAILJOBSCHEDULE] where ID = @ID;    

    end try

    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

    return 0;