USP_WORKFLOWALERT_ISSUED_ALERT_SEND
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@WORKFLOWALERTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_WORKFLOWALERT_ISSUED_ALERT_SEND
(
@WORKFLOWALERTID uniqueidentifier
)
as
begin
declare @ALERTTYPEID uniqueidentifier = '146ac6ac-ada5-4a7a-b670-31feff8dd43f';
if not exists (select top(1) ID from dbo.DATABASEMAILSETTINGS where ENABLED = 1)
return 0;
declare @EMAILBODYCONTEXTLINKPAGEID uniqueidentifier
declare @EMAILSUBJECT nvarchar(255);
declare @EMAILBODY nvarchar(max);
declare @EMAILVIEWFORMINSTANCEID uniqueidentifier;
declare @BODYLINK nvarchar(2048);
select
@EMAILSUBJECT = EMAILSUBJECT,
@EMAILBODY = EMAILBODY,
@EMAILBODYCONTEXTLINKPAGEID = EMAILBODYCONTEXTLINKPAGEID,
@EMAILVIEWFORMINSTANCEID = EMAILVIEWFORMINSTANCEID
from
dbo.ALERTTYPE
where
ID = @ALERTTYPEID;
begin try
if @EMAILVIEWFORMINSTANCEID is not null
exec dbo.USP_ALERT_PERFORMFIELDSUBSTITUTION @EMAILBODY output, @EMAILSUBJECT output, @EMAILVIEWFORMINSTANCEID, @WORKFLOWALERTID, null;
end try
begin catch
-- do nothing, field substitution failing shouldn't prevent email from being sent
end catch
if @EMAILBODYCONTEXTLINKPAGEID is not null
set @BODYLINK = dbo.UFN_ALERT_GETAPPLICATIONLINK(@EMAILBODYCONTEXTLINKPAGEID, @WORKFLOWALERTID);
set @EMAILSUBJECT = replace(@EMAILSUBJECT, '<<APPLICATIONLINK>>', coalesce(@BODYLINK, ''));
set @EMAILBODY = replace(@EMAILBODY, '<<APPLICATIONLINK>>', coalesce(@BODYLINK, ''))
declare @EMAILADDRESSES table (APPUSERID uniqueidentifier, EMAILADDRESS nvarchar(100))
insert into @EMAILADDRESSES
select BBWORKFLOWINBOXASSIGNMENT.APPUSERID, APPUSERALERTSETTING.EMAILADDRESS from dbo.BBWORKFLOWALERT
inner join dbo.BBWORKFLOWINBOXASSIGNMENT on BBWORKFLOWALERT.BBWORKFLOWINBOXID = BBWORKFLOWINBOXASSIGNMENT.BBWORKFLOWINBOXID
inner join dbo.APPUSERALERTTYPESETTING on APPUSERALERTTYPESETTING.APPUSERID = BBWORKFLOWINBOXASSIGNMENT.APPUSERID
inner join dbo.APPUSERALERTSETTING on APPUSERALERTTYPESETTING.APPUSERID = APPUSERALERTSETTING.ID
and APPUSERALERTTYPESETTING.ALERTTYPEID = @ALERTTYPEID and APPUSERALERTTYPESETTING.ENABLED = 1
where BBWORKFLOWALERT.ID = @WORKFLOWALERTID
union all
select SYSTEMROLEAPPUSER.APPUSERID, APPUSERALERTSETTING.EMAILADDRESS from dbo.BBWORKFLOWALERT
inner join dbo.BBWORKFLOWINBOXASSIGNMENT on BBWORKFLOWALERT.BBWORKFLOWINBOXID = BBWORKFLOWINBOXASSIGNMENT.BBWORKFLOWINBOXID
inner join SYSTEMROLEAPPUSER on BBWORKFLOWINBOXASSIGNMENT.SYSTEMROLEID = SYSTEMROLEAPPUSER.SYSTEMROLEID
inner join dbo.APPUSERALERTTYPESETTING on APPUSERALERTTYPESETTING.APPUSERID = SYSTEMROLEAPPUSER.APPUSERID
and APPUSERALERTTYPESETTING.ALERTTYPEID = @ALERTTYPEID and APPUSERALERTTYPESETTING.ENABLED = 1
inner join dbo.APPUSERALERTSETTING on APPUSERALERTTYPESETTING.APPUSERID = APPUSERALERTSETTING.ID
where BBWORKFLOWALERT.ID = @WORKFLOWALERTID
declare @APPUSERID uniqueidentifier
declare @EMAILADDRESS nvarchar(100)
declare emailaddress_cursor cursor for select distinct APPUSERID, EMAILADDRESS from @EMAILADDRESSES
open emailaddress_cursor;
fetch next from emailaddress_cursor
into @APPUSERID, @EMAILADDRESS;
while @@FETCH_STATUS = 0
begin
exec dbo.USP_ALERT_SEND @EMAILADDRESS, @EMAILSUBJECT, @EMAILBODY, 'TEXT', 'Normal';
fetch next from emailaddress_cursor
into @APPUSERID, @EMAILADDRESS;
end
close emailaddress_cursor;
deallocate emailaddress_cursor;
return 0;
end