USP_GET_INACTIVERECIPIENT_BYEMAILID

Parameters

Parameter Parameter Type Mode Description
@EMAILID int IN
@INACTIVERECIPIENTFROMMONTHS int IN

Definition

Copy


CREATE procedure dbo.USP_GET_INACTIVERECIPIENT_BYEMAILID 
 @EMAILID int,
 @INACTIVERECIPIENTFROMMONTHS int=0
as
begin
    declare @EMAILLISTID as int =0,
              @EMAILLIST_DATASOURCE as int =0,
                @EMAILADDRESSTYPEID as uniqueidentifier =null,
              @COUNT int=0,
              @ACQUIREDRECORDCOUNT int=0

    create table #EmailDataSource 
    (
    emailListID int,
    emailListDatasource int,
    emailAddressTypeID uniqueidentifier
    )
    insert into #EmailDataSource
    select EL.ID, EL.DataSourceID, EM.EmailAddressTypeID
    from dbo.Email EM 
    join dbo.Email_EmailList EEL on EEL.EmailID= EM.ID
    join dbo.EmailList EL on EL.ID = EEL.EmailListID where EM.id =@EMAILID and EEL.IsTest = 0


    declare EMAILLIST_CURSOR CURSOR  
    local  forward_only  for select emailListID, emailListDatasource, emailAddressTypeID from #EmailDataSource

    open EMAILLIST_CURSOR  
    fetch next from EMAILLIST_CURSOR INTO  @EMAILLISTID ,@EMAILLIST_DATASOURCE, @EMAILADDRESSTYPEID
    while @@FETCH_STATUS = 0  
    begin  
            if @EMAILLIST_DATASOURCE =1          --- Constituents List

            begin
                if (@EMAILADDRESSTYPEID is null)
                  begin
                     select @COUNT=count(1
                     from dbo.EmailList_People EQP 
                     join dbo.EMAIL_INACTIVERECIPIENT EIR on EQP.EmailAddress = EIR.emailaddress 
                     where EmailListID = @EMAILLISTID and EIR.INACTIVEFROMMONTHS >=@INACTIVERECIPIENTFROMMONTHS
                  end
                 else
                    begin
                  select @COUNT=count(1) from (
                            select OQ.EMAILADDRESS from(
                                                             select IQ.EMAILADDRESS, ROW_NUMBER() over(partition by IQ.ID order by IQ.isprimary) as rowNumber
                                                             from(
                                                                    select CS.ID, ROW_NUMBER() over(partition by CS.ID, E.EMAILADDRESSTYPECODEID order by E.sequence) as row_num,
                                                                           ISPRIMARY,E.EMAILADDRESSTYPECODEID,E.EMAILADDRESS
                                                                    from dbo.EmailList_People EQP
                                                                    join dbo.BackOfficeSystemPeople BOSP on BOSP.ID =EQP.PeopleID
                                                                    join dbo.constituent CS on CS.SEQUENCEID=BOSP.BackofficeRecordID
                                                                    join dbo.EMAILADDRESS E on E.CONSTITUENTID=CS.ID
                                                                    where EQP.EmailListID = @EMAILLISTID
                                                                )IQ where IQ.row_num=1 and (IQ.EMAILADDRESSTYPECODEID = @EMAILADDRESSTYPEID or IQ.ISPRIMARY=1
                                                            )OQ where OQ.rowNumber=1 
                                      )FQ join EMAIL_INACTIVERECIPIENT EIR on EIR.EMAILADDRESS=FQ.EMAILADDRESS
                                                    where  EIR.INACTIVEFROMMONTHS >=@INACTIVERECIPIENTFROMMONTHS
                   end
            end
            else if @EMAILLIST_DATASOURCE =101     --- Registered Users

            begin
                select @COUNT=count(1
                from dbo.ClientUsers CU 
                join dbo.EMAIL_INACTIVERECIPIENT EIR on CU.EMail = EIR.emailaddress
                where Deleted=0 and EIR.INACTIVEFROMMONTHS >=@INACTIVERECIPIENTFROMMONTHS
            end
            else if @EMAILLIST_DATASOURCE=300      --- Imported List

            begin
                select @COUNT=count(1
                from dbo.EmailListUploadMasterList EUM
                join dbo.EMAIL_INACTIVERECIPIENT EIR on EUM.EmailAddress = EIR.emailaddress 
                where EUM.EmailListID = @EMAILLISTID and EIR.INACTIVEFROMMONTHS >=@INACTIVERECIPIENTFROMMONTHS
            end
            else if @EMAILLIST_DATASOURCE=303      --- User Defined

            begin 
                select @COUNT=count(1
                from dbo.EmailList_UserDefined EQP 
                join dbo.EMAIL_INACTIVERECIPIENT EIR on EQP.EmailAddress = EIR.emailaddress 
                where EQP.EmailListID = @EMAILLISTID and EIR.INACTIVEFROMMONTHS >=@INACTIVERECIPIENTFROMMONTHS
            end    
      else if @EMAILLIST_DATASOURCE=103      --- Chapter

            begin
            declare @QueryID as int
            select @QueryID=QueryID from EmailList_Query 
      where EmailListID=@EMAILLISTID

      select @COUNT=count(1
                from dbo.EmailList_People EQP 
                join dbo.EMAIL_INACTIVERECIPIENT EIR on EQP.EmailAddress = EIR.emailaddress 
                where QueryID = @QueryID and EIR.INACTIVEFROMMONTHS >=@INACTIVERECIPIENTFROMMONTHS
            end
            set @AcquiredRecordCount=@AcquiredRecordCount + @COUNT 

    fetch next from EMAILLIST_CURSOR INTO  @EMAILLISTID ,@EMAILLIST_DATASOURCE, @EMAILADDRESSTYPEID
    end  

    close EMAILLIST_CURSOR  
    deallocate EMAILLIST_CURSOR  

    select @ACQUIREDRECORDCOUNT as AcquiredRecordCount

    if OBJECT_ID('tempdb..#EmailDataSource') IS NOT NULL
    drop table #EmailDataSource
end