USP_GLOBALCHANGE_CHANGEACKNOWLEDGEMENTMESSAGE

Parameters

Parameter Parameter Type Mode Description
@SELECTEDEVENTS xml IN
@SOURCEEVENTID uniqueidentifier IN
@SOURCEACKNOWLEDGEMENTID int 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_CHANGEACKNOWLEDGEMENTMESSAGE
(
  @SELECTEDEVENTS xml,
  @SOURCEEVENTID uniqueidentifier,
  @SOURCEACKNOWLEDGEMENTID int,
    @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 @CURRENTDATE datetime
  declare @SOURCETEXT nvarchar(max)
  declare @MESSAGESUBJECT nvarchar(max)
  DECLARE @TOTALEMAILTEMPLATES int
  DECLARE @CONFIRMATIONTYPECODE int = 0
  DECLARE @TARGETMESSAGESTABLE table (ID int identity(1,1), EMAILTEMPLATEID int)

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

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

  if  @SOURCEACKNOWLEDGEMENTID is not null begin
    begin try
      SELECT @SOURCETEXT = CONTENTHTML, @CONFIRMATIONTYPECODE = EET.CONFIRMATIONTYPECODE, @MESSAGESUBJECT=ET.SUBJECT
      FROM dbo.EmailTemplate ET
      INNER JOIN dbo.EVENTEMAILTEMPLATE EET ON ET.ID = EET.EMAILTEMPLATEID
      WHERE ET.ID = @SOURCEACKNOWLEDGEMENTID

      --create a temp table of the email templates we need to update

      INSERT INTO @TARGETMESSAGESTABLE (EMAILTEMPLATEID)
      SELECT EMAILTEMPLATEID FROM EVENTEMAILTEMPLATE
      WHERE CONFIRMATIONTYPECODE=@CONFIRMATIONTYPECODE
      AND EVENTID IN (
        SELECT EVENTID FROM (SELECT T.c.value('(EVENTID)[1]','uniqueidentifier') As 'EVENTID'
        FROM @SELECTEDEVENTS.nodes('/SELECTEDEVENTS/ITEM') T(c)) AS XMLTABLE
        WHERE exists(
            select 1 from dbo.UFN_SITEID_MAPFROM_EVENTID(XMLTABLE.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)) )
            )            
      )

      --get the total #

      SELECT @TOTALEMAILTEMPLATES = COUNT(*) FROM @TARGETMESSAGESTABLE

      --update the subject and content fields for the given email templates

      update dbo.EmailTemplate
      SET SUBJECT=@MESSAGESUBJECT
      CONTENTHTML=@SOURCETEXT
            where ID in (SELECT EMAILTEMPLATEID FROM @TARGETMESSAGESTABLE)

      set @NUMBEREDITED = @TOTALEMAILTEMPLATES;      
    end try
      begin catch
          exec dbo.USP_RAISE_ERROR;
          return 1
      end catch
  end