USP_GET_CONSTITUENT_APPEALEMAILSTATUS_FORGIVENMARKETINGSEGMENT

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@MKTSEGMENTATIONID uniqueidentifier IN
@ISNOTSENT bit INOUT
@EMAILID int INOUT
@BOUNCE bit INOUT
@SPAMCOMPLAINT bit INOUT
@ERRORMESSAGE nvarchar(1000) INOUT
@EMAILADDRESS nvarchar(250) INOUT
@OPTEDOUT bit INOUT

Definition

Copy


create procedure dbo.USP_GET_CONSTITUENT_APPEALEMAILSTATUS_FORGIVENMARKETINGSEGMENT
( @CONSTITUENTID uniqueidentifier = null,
    @MKTSEGMENTATIONID as uniqueidentifier = null,
    @ISNOTSENT bit = null output,
    @EMAILID int = null output,
    @BOUNCE bit = null output,
    @SPAMCOMPLAINT bit = 0 output,
    @ERRORMESSAGE nvarchar(1000) = null output,
    @EMAILADDRESS nvarchar(250) = null output,
    @OPTEDOUT bit = null output
)
as
begin

declare @TBLNAME as nvarchar(100);

         --Pick first record to get first email's status of this recipient status

         select top 1 @TBLNAME = BPS.TABLENAME
         from dbo.[MKTSEGMENTATION] MS
                    inner join  dbo.[MKTSEGMENTATIONEXPORTPROCESS] as MKTSEP on MKTSEP.[SEGMENTATIONID] = MS.ID
                    inner join  dbo.MKTSEGMENTATIONEXPORTPROCESSSTATUS as MKTSEXPS on MKTSEXPS.PARAMETERSETID = MKTSEP.ID
                    inner join  dbo.BUSINESSPROCESSOUTPUT as BPS on BPS.BUSINESSPROCESSSTATUSID = MKTSEXPS.ID
            where
                    (BPS.[TABLEKEY]) = upper(convert(nvarchar(36), MKTSEXPS.ID)) and MS.ID = @MKTSEGMENTATIONID order by BPS.DATEADDED 

            if(len(@TBLNAME)>0 and exists (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @TBLNAME and COLUMN_NAME = 'STATUS' ))
            begin            
                    declare @sql as nvarchar(1000) = 'select @result = case 
                                                                                                                                    when STATUS is null then 0 
                                                                                                                                    when STATUS.exist(''/STATUS/ITEM/NETCOMMUNITYEMAILID'') =1 then STATUS.value(''(/STATUS/ITEM/NETCOMMUNITYEMAILID)[1]'', ''int'') 
                                                                                                                            else 0 end 
                                                                                                                                    from dbo.['+@TBLNAME+']';

                    exec sp_executesql @SQL, N'@result int out', @EMAILID out
                    if(@EmailID >0)
                    begin
                        select @ISNOTSENT = case when (BOUNCED =1 or SPAMCOMPLAINT =1) then 1 else 0 end,
                            @BOUNCE = BOUNCED,
                            @SPAMCOMPLAINT = SPAMCOMPLAINT,
                            @ERRORMESSAGE = BOUNCETEXT,
                            @EMAILADDRESS = EMAILADDRESS,
                            @OPTEDOUT = OPTEDOUT
                            from dbo.NETCOMMUNITYEMAILJOBRECIPIENT where EMAILBBNCMAPID = @EmailID and CONSTITUENTID = @CONSTITUENTID;
                    end
            end

        set @ISNOTSENT= isnull(@ISNOTSENT,0);
        set @EMAILID = isnull(@EMAILID,0); 
        set @BOUNCE =isnull(@BOUNCE,0); 
        set @SPAMCOMPLAINT = isnull(@SPAMCOMPLAINT,0);
        set @EMAILADDRESS = isnull(@EMAILADDRESS, '');
        set @OPTEDOUT = isnull(@OPTEDOUT,0);
end