USP_GLOBALCHANGE_DELETECOMMUNICATIONTEMPLATE

Parameters

Parameter Parameter Type Mode Description
@SELECTEDPARTICIPANTCOMMUNICATIONTEMPLATES xml IN
@CHANGEAGENTID uniqueidentifier IN
@ASOF datetime IN
@NUMBERADDED int INOUT
@NUMBEREDITED int INOUT
@NUMBERDELETED int INOUT
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


create procedure dbo.USP_GLOBALCHANGE_DELETECOMMUNICATIONTEMPLATE
(
    @SELECTEDPARTICIPANTCOMMUNICATIONTEMPLATES xml = null,
    @CHANGEAGENTID uniqueidentifier = null,
    @ASOF as datetime = null,
    @NUMBERADDED int = 0 output,
    @NUMBEREDITED int = 0 output,
    @NUMBERDELETED int = 0 output,
  @CURRENTAPPUSERID uniqueidentifier = null
)
as            
    set nocount off;

    declare @ONEPERRECORD bit

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate();
    set @NUMBERADDED = 0;
    set @NUMBEREDITED = 0;
    set @NUMBERDELETED = 0

    declare @Count int, @Index int
    declare @EmailTemplateID int = 0,
            @EmailTemplateGuID uniqueidentifier,
            @EventEmailTemplateID uniqueidentifier

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

    begin try
        -- do the global change operation here, and set @NUMBERADDED, @NUMBEREDITED, and/or @NUMBERDELETED as appropriate

        IF @SELECTEDPARTICIPANTCOMMUNICATIONTEMPLATES IS NOT NULL
        BEGIN

                  DECLARE @RemoveTable table(
                      ID int identity(1,1), 
                      EmailTemplateGUID uniqueidentifier
                )

            INSERT INTO @RemoveTable(EmailTemplateGUID)
            SELECT EMAILTEMPLATEGUID from (SELECT T.c.value('(RECORDID)[1]','uniqueidentifier') AS 'EMAILTEMPLATEGUID'
            FROM @SELECTEDPARTICIPANTCOMMUNICATIONTEMPLATES.nodes('/SELECTEDPARTICIPANTCOMMUNICATIONTEMPLATES/ITEM') T(c)) AS XMLTABLE
      INNER JOIN EMAILTEMPLATE ET ON XMLTABLE.EMAILTEMPLATEGUID = ET.GUID
      INNER JOIN EVENTEMAILTEMPLATE ETT on ET.ID = ETT.EMAILTEMPLATEID
      WHERE exists(
          select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(ETT.EVENTID) EVENTSITE
          where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 
            or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,'800093A6-B727-490B-8CC4-C0C0CF2148F0',20
            where SITEID=[EVENTSITE].[SITEID] or (SITEID is null and [EVENTSITE].[SITEID] is null)) )
          )      



            SET @NUMBERDELETED = 0
            SELECT @Count = COUNT(*),@Index = 1 FROM @RemoveTable

            WHILE @Index <= @Count
            BEGIN
                SELECT @EmailTemplateId = b.ID 
                FROM @RemoveTable a
                inner join Emailtemplate b on b.Guid = a.EmailTemplateGUID 
                WHERE a.ID = @Index

                SET @EventEmailTemplateID = (SELECT top 1 A.ID from EVENTEMAILTEMPLATE a JOIN EMAILTEMPLATE B ON a.EMAILTEMPLATEID = B.ID and b.ID = @EmailTemplateId and b.Deleted = 0)
                IF @EmailTemplateID IS NOT NULL and @EventEmailTemplateID is not null
                BEGIN
                    -- use the system generated delete routine to allow proper recording of the deleting agent

                    exec USP_EVENTEMAILTEMPLATE_DELETEBYID_WITHCHANGEAGENTID @EventEmailTemplateId, @CHANGEAGENTID

                    exec spDelete_EmailTemplate @PKID = @EmailTemplateID, @CurrentUsersID=0
                    SET @NUMBERDELETED = @NUMBERDELETED + 1
                END
                SET @Index = @Index + 1
            END
            -- SELECT @NUMBERDELETED = COUNT(*) from @RemoveTable


            /*
              declare @EMAILTEMPLATEID int

            select @EMAILTEMPLATEID = EMAILTEMPLATEID from EVENTEMAILTEMPLATE where ID = @ID

            -- use the system generated delete routine to allow proper recording of the deleting agent
            exec USP_EVENTEMAILTEMPLATE_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID

            exec spDelete_EmailTemplate @PKID = @EMAILTEMPLATEID, @CurrentUsersID=0
            */
        END
    end try

    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch