USP_DATALIST_FAFADDRESSBOOKCONTACTSEARCH

Search FAF address book

Parameters

Parameter Parameter Type Mode Description
@CLIENTUSERSID int IN Client Users ID
@EVENTID uniqueidentifier IN Event ID
@SEARCHSTRING varchar(50) IN Search String

Definition

Copy




CREATE procedure dbo.USP_DATALIST_FAFADDRESSBOOKCONTACTSEARCH  
(    
 @CLIENTUSERSID int,    
 @EVENTID uniqueidentifier,    
 @SEARCHSTRING varchar(50) = ''    
)    
as    
set nocount on;    

DECLARE @EMPTYGUID uniqueidentifier;    
SET @EMPTYGUID = '00000000-0000-0000-0000-000000000000';    

DECLARE @CONSTITUENTID uniqueidentifier    
SET @CONSTITUENTID = dbo.UFN_CONSTITUENT_GET_BY_CLIENTUSERID(@CLIENTUSERSID)    

DECLARE @PREVIOUSEVENTID uniqueidentifier    
select @PREVIOUSEVENTID = prioryeareventid from dbo.EVENTEXTENSION (NOLOCK) WHERE EVENTID = @EVENTID    

IF ISNULL(@SEARCHSTRING,'') > ''    
SET @SEARCHSTRING = '%'+@SEARCHSTRING+'%'    

 declare @TEAMID uniqueidentifier, @COMPANYID uniqueidentifier    

 DECLARE     
 @IsIndependentHouseholdMember bit     
 ,@IsIndependentHouseholdLeader bit      
 ,@IsIndependentTeamMember bit      
 ,@IsIndependentTeamLeader bit       
 ,@IsCompanyHouseholdMember bit       
 ,@IsCompanyHouseholdLeader bit       
 ,@IsCompanyTeamHouseholdLeader bit       
 ,@IsCompanyTeamMember bit       
 ,@IsCompanyTeamLeader bit       
 ,@IsCompanyLeader bit       
 ,@IsCompanyTeamHouseholdMember bit    
 ,@IsTeamHouseholdMember bit    
 ,@IsTeamHouseholdLeader bit    

 EXEC dbo.USP_FAF_REGISTRANT_ROLE    
 @CONSTITUENTID = @CONSTITUENTID    
 ,@EVENTID =@EVENTID    
 ,@IsIndependentHouseholdMember  = @IsIndependentHouseholdMember OUTPUT    
 ,@IsIndependentHouseholdLeader  = @IsIndependentHouseholdLeader OUTPUT    
 ,@IsIndependentTeamMember  = @IsIndependentTeamMember OUTPUT    
 ,@IsIndependentTeamLeader   = @IsIndependentTeamLeader OUTPUT    
 ,@IsCompanyHouseholdMember   = @IsCompanyHouseholdMember OUTPUT    
 ,@IsCompanyHouseholdLeader   = @IsCompanyHouseholdLeader OUTPUT    
 ,@IsCompanyTeamHouseholdLeader   = @IsCompanyTeamHouseholdLeader OUTPUT    
 ,@IsCompanyTeamMember   = @IsCompanyTeamMember OUTPUT    
 ,@IsCompanyTeamLeader   = @IsCompanyTeamLeader OUTPUT    
 ,@IsCompanyLeader   = @IsCompanyLeader OUTPUT    
 ,@IsCompanyTeamHouseholdMember = @IsCompanyTeamHouseholdMember OUTPUT    
 ,@IsTeamHouseholdMember = @IsTeamHouseholdMember OUTPUT    
 ,@IsTeamHouseholdLeader = @IsTeamHouseholdLeader OUTPUT    

 DECLARE @MYADDRESSBOOK table (    
 GROUPNAME nvarchar(256),    
 CATEGORYSTATUS nvarchar(100),    
 ADDRESSBOOKID uniqueidentifier null,    
 NAME varchar(256) null,    
 CONSTITUENTID uniqueidentifier null,    
 EMAILADDRESS varchar(200) null,    
 REGISTRANTID uniqueidentifier null    
)    



 --show 'My Team'     

 IF (@IsIndependentTeamLeader = 1    
   OR @IsIndependentTeamMember = 1    
   OR @IsCompanyTeamMember = 1    
   OR @IsCompanyTeamLeader = 1    
)      
 BEGIN    
   INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
   SELECT 'Team members', Name, ID    
   FROM dbo.UFN_FAF_TEAMMEMBERLIST(@CONSTITUENTID, @EVENTID ) -- 1=household    


   --don't get the team leaders group here for @IsCompanyTeamLeader, as it has special business logic,

   --and is retrieved later (see --company Team Leaders) section

   IF @IsCompanyTeamLeader = 0
   BEGIN
     INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
     SELECT 'Team leaders', Name, ID    
     FROM dbo.UFN_INDEPENDENTTEAMLEADERLIST(@CONSTITUENTID, @EVENTID) -- 1 = team    

   END

 END    

  --show 'My Team' for company team HH leader & team HH leader    

 if (@IsCompanyTeamHouseholdLeader = 1    
    OR @IsTeamHouseholdLeader = 1    
  )    
  begin    
   SELECT @TEAMID = PARENTTEAMID    
   FROM dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)   

   INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)      
   SELECT   
   CASE   
     WHEN TFTC.ID IS NULL THEN 'Team members'  
     WHEN TFTC.ID IS NOT NULL THEN 'Team leaders'  
   END,   
   Name,  
   TML.ID  
   FROM dbo.UFN_FAF_TEAMMEMBERLIST_BY_TEAMID(@TEAMID) TML  
   LEFT OUTER JOIN TEAMFUNDRAISINGTEAMCAPTAIN TFTC ON TML.TEAMID = TFTC.TEAMFUNDRAISINGTEAMID AND TFTC.CONSTITUENTID = TML.ID  
  end    

  --Household leaders    

  IF (@IsCompanyHouseholdLeader = 1    
 OR @IsCompanyHouseholdMember = 1    
 OR @IsCompanyTeamHouseholdLeader = 1    
 OR @IsCompanyTeamHouseholdMember = 1    
 OR @IsTeamHouseholdMember = 1    
 OR @IsTeamHouseholdLeader = 1    
 OR @IsIndependentHouseholdMember = 1    
 OR @IsIndependentHouseholdLeader = 1    
  )    
  BEGIN    
    INSERT INTO  @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
    SELECT     
    'Household Leaders',    
    name,    
    ID    
    FROM dbo.UFN_FAF_HOUSEHOLDLEADERLIST(@CONSTITUENTID, @EVENTID)    
  END    

 --Household Members    

 IF (@IsCompanyHouseholdLeader = 1    
 OR @IsCompanyHouseholdMember = 1    
 OR @IsCompanyTeamHouseholdLeader = 1    
 OR @IsCompanyTeamHouseholdMember = 1    
 OR @IsTeamHouseholdMember = 1    
 OR @IsTeamHouseholdLeader = 1    
 OR @IsIndependentHouseholdMember = 1    
 OR @IsIndependentHouseholdLeader = 1    
    )    
 BEGIN    
   INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
   SELECT 'Household members', Name, ID    
   FROM dbo.UFN_FAF_HOUSEHOLDMEMBERLIST(@CONSTITUENTID, @EVENTID)    
    --WHERE ID <> @CONSTITUENTID    

 END    

  --company Team Leaders, need to add "team leaders across"+households under the team + HH leaders across    


  IF(@IsCompanyTeamLeader = 1)    
    BEGIN    
      -- insert team leaders across the company    

       INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
      SELECT     
      'Team Leaders',    
      name,     
      ID    
      FROM dbo.UFN_TEAMLEADERLIST(@CONSTITUENTID, @EVENTID)    
      --where ID <> @CONSTITUENTID    


       select @TEAMID = TEAMID    
       from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)    

      if @TEAMID is not null    
      begin    
          --insert households directly under the team     

         insert into @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
          select 'Household - ' + TFTC.NAME, FN.Name, FN.id     
          from dbo.TEAMFUNDRAISINGTEAM TFT    
          inner join dbo.TEAMFUNDRAISINGTEAM TFTC    
            on TFT.ID = TFTC.PARENTTEAMID    
          inner join dbo.TEAMEXTENSION TEHH    
            on TFTC.ID = TEHH.TEAMFUNDRAISINGTEAMID     
            and TEHH.TYPECODE =3  --households    

          cross apply dbo.UFN_FAF_HOUSEHOLDMEMBERLIST_BY_HOUSEHOLDID(TFTC.ID) FN    
          where TFT.ID = @TEAMID      

          --also needs Household leaders under my team    

         insert into @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
          select 'Household Leaders', C.name, C.ID    
          from dbo.TEAMFUNDRAISINGTEAM TFTHH    
          inner join TEAMEXTENSION TE  -- get those household    

                on TFTHH.ID = TE.TEAMFUNDRAISINGTEAMID      
                and TE.TYPECODE = 3      
          inner join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TC  --retrieve their leaders    

                on TFTHH.ID = TC.TEAMFUNDRAISINGTEAMID    
          inner join dbo.CONSTITUENT C    
                on TC.CONSTITUENTID = C.ID      
          where TFTHH.PARENTTEAMID = @TEAMID               
      end    
    END     

 --for company leaders only, 'My Individuals' and 'My Company', and 'Company Laders'    

 IF (@IsCompanyLeader = 1)    
 BEGIN    
 print @CONSTITUENTID
   INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    

   SELECT     
   'Individuals - current', Name, ID    
   FROM dbo.UFN_FAF_COMPANYINDIVIDUALLIST(@CONSTITUENTID, @EVENTID)    

   UNION     

   SELECT -- team leaders, household leaders under this company    

   groupname+' - current', Name, ID    
   FROM dbo.UFN_FAF_COMPANYTEAMLEADERLIST(@CONSTITUENTID, @EVENTID)    

    UNION    

    SELECT 'Company leaders - current', Name, ID    
   FROM dbo.UFN_FAF_COMPANYLEADERLIST(@EVENTID)    

    UNION    

    SELECT 'Company members - current', Name, ID    
    FROM dbo.UFN_FAF_COMPANYMEMBERLIST(@CONSTITUENTID, @EVENTID)    

     --and insert teams and households under the company        

     select @COMPANYID = TEAMID    
     from dbo.UFN_FAF_GETTEAMINFO_BY_REGISTRANT(@CONSTITUENTID, @EVENTID)    

        print @COMPANYID
     if(@COMPANYID is not null)    
     begin    
        insert into @MYADDRESSBOOK (GROUPNAME, CATEGORYSTATUS, NAME, CONSTITUENTID) 
        select 
            GROUPNAME,
            CASE   
                WHEN TFTC.ID IS NULL THEN 'team members - current'  
                WHEN TFTC.ID IS NOT NULL THEN 'team leaders - current'  
            END as CATEGORYSTATUS,
            NAME, 
            TML.ID from (   
                select 'Team - '+ TFTC.NAME as GROUPNAME, FN.Name, FN.id AS ID, TFTC.ID AS TEAMID     
                from dbo.TEAMFUNDRAISINGTEAM TFT    
                inner join dbo.TEAMFUNDRAISINGTEAM TFTC    
                    on TFT.ID = TFTC.PARENTTEAMID    
                inner join dbo.TEAMEXTENSION TEHH    
                    on TFTC.ID = TEHH.TEAMFUNDRAISINGTEAMID     
                    and TEHH.TYPECODE =1  --team    

                cross apply dbo.UFN_FAF_TEAMMEMBERLIST_BY_TEAMID(TFTC.ID) FN    
                where TFT.ID = @COMPANYID      
            ) TML
            LEFT OUTER JOIN TEAMFUNDRAISINGTEAMCAPTAIN TFTC 
                ON TML.TEAMID = TFTC.TEAMFUNDRAISINGTEAMID 
                AND TFTC.CONSTITUENTID = TML.ID  

        insert into @MYADDRESSBOOK (GROUPNAME, CATEGORYSTATUS, NAME, CONSTITUENTID)    
        SELECT
            GROUPNAME,
            CASE   
                WHEN TFTC.ID IS NULL THEN 'household members - current'  
                WHEN TFTC.ID IS NOT NULL THEN 'household leaders - current'  
            END as CATEGORYSTATUS,
            NAME, 
            TML.ID from (         
                select 'Household - ' + TFTC.NAME AS GROUPNAME, FN.Name, FN.id AS ID, TFTC.ID AS TEAMID      
                from dbo.TEAMFUNDRAISINGTEAM TFT    
                inner join dbo.TEAMFUNDRAISINGTEAM TFTC    
                    on TFT.ID = TFTC.PARENTTEAMID    
                inner join dbo.TEAMEXTENSION TEHH    
                    on TFTC.ID = TEHH.TEAMFUNDRAISINGTEAMID     
                    and TEHH.TYPECODE =3  --households    

                cross apply dbo.UFN_FAF_HOUSEHOLDMEMBERLIST_BY_HOUSEHOLDID(TFTC.ID) FN    
                where TFT.ID = @COMPANYID      
            ) TML
            LEFT OUTER JOIN TEAMFUNDRAISINGTEAMCAPTAIN TFTC 
                ON TML.TEAMID = TFTC.TEAMFUNDRAISINGTEAMID 
                AND TFTC.CONSTITUENTID = TML.ID  
     end    
  END    

 -- previous members    


  DECLARE @MYADDRESSBOOKPREVIOUS table (    
       GROUPNAME nvarchar(100),    
       NAME varchar(256) null,    
       CONSTITUENTID uniqueidentifier null    
       )    

    IF @PREVIOUSEVENTID IS NOT NULL    
    Begin    

      IF (@IsIndependentTeamLeader = 1    
       OR @IsIndependentTeamMember = 1    
       OR @IsCompanyTeamMember = 1    
       OR @IsCompanyTeamLeader = 1)      
     BEGIN    
       INSERT INTO @MYADDRESSBOOKPREVIOUS (GROUPNAME, NAME, CONSTITUENTID)    
       SELECT 'Team members - Previous', Name, ID    
       FROM dbo.UFN_FAF_TEAMMEMBERLIST(@CONSTITUENTID, @PREVIOUSEVENTID) -- 1 = team    

        where ID not in (Select constituentid from dbo.REGISTRANT (NOLOCK) where EVENTID = @EVENTID)    
     END    

      IF (@IsCompanyHouseholdLeader = 1    
  OR @IsCompanyHouseholdMember = 1    
  OR @IsCompanyTeamHouseholdLeader = 1    
  OR @IsCompanyTeamHouseholdMember = 1    
  OR @IsTeamHouseholdMember = 1    
  OR @IsTeamHouseholdLeader = 1    
  OR @IsIndependentHouseholdMember = 1    
  OR @IsIndependentHouseholdLeader = 1    
        )    
     BEGIN    
       INSERT INTO @MYADDRESSBOOKPREVIOUS (GROUPNAME, NAME, CONSTITUENTID)    
       SELECT 'Household members - Previous', Name, ID    
       FROM dbo.UFN_FAF_HOUSEHOLDMEMBERLIST(@CONSTITUENTID, @PREVIOUSEVENTID)    
        WHERE ID not in (Select constituentid from dbo.REGISTRANT (NOLOCK) where EVENTID = @EVENTID)    
     END    

      IF (@IsCompanyLeader = 1)    
     BEGIN    
       INSERT INTO @MYADDRESSBOOKPREVIOUS (GROUPNAME, NAME, CONSTITUENTID)    

       SELECT     
       'Individuals - Previous', Name, ID    
       FROM dbo.UFN_FAF_COMPANYINDIVIDUALLIST(@CONSTITUENTID, @PREVIOUSEVENTID)    
        WHERE ID not in (Select constituentid from dbo.REGISTRANT (NOLOCK) where EVENTID = @EVENTID)    

       UNION     

       SELECT -- team leaders, household leaders under this company    

       groupname+' - Previous', Name, ID    
       FROM dbo.UFN_FAF_COMPANYTEAMLEADERLIST(@CONSTITUENTID, @PREVIOUSEVENTID)    
        WHERE ID not in (Select constituentid from dbo.REGISTRANT (NOLOCK) where EVENTID = @EVENTID)    

     END    

   End    -- previous members    



  INSERT INTO @MYADDRESSBOOK (GROUPNAME, NAME, CONSTITUENTID)    
  SELECT PA.GROUPNAME,PA.NAME,PA.CONSTITUENTID    
  FROM @MYADDRESSBOOKPREVIOUS PA    
  LEFT OUTER JOIN @MYADDRESSBOOK MA    
  ON MA.CONSTITUENTID = PA.CONSTITUENTID    
  WHERE MA.CONSTITUENTID IS NULL    
/*      
     INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)     
        SELECT    
        (CASE ISNULL(D.STATUS,'S')   
     WHEN 'A' THEN 'Donors - current'      
    WHEN 'P' THEN 'Donors - previous'    
    END), D.CONTACTID, ltrim(rtrim(replace(isnull(A.FIRSTNAME+' ', '') + isnull(A.LASTNAME, ''), '  ', ' '))), D.CONSTITUENTID, A.EMAILADDRESS  
    FROM dbo.UFN_FAFADDRESSBOOK_DONORS_LIST(@EVENTID, @CLIENTUSERSID) D  
    INNER JOIN dbo.ADDRESSBOOKFAF A (NOLOCK) ON A.ID = D.CONTACTID      
*/

  INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)     
  select 'Donors - current', ABF.ID, ltrim(rtrim(replace(isnull(ABF.FIRSTNAME+' ', '') + isnull(ABF.LASTNAME, ''), '  ', ' '))), ABF.CONSTITUENTID, ABF.EMAILADDRESS 
  from REVENUERECOGNITION RR
  inner join FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = RR.REVENUESPLITID 
  INNER JOIN REVENUESPLIT_EXT RS_EXT on FTLI.ID = RS_EXT.ID 
  inner join FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID 
  inner join REVENUE_EXT R_EXT on R_EXT.ID = FT.ID 
  inner join EVENT E on R_EXT.APPEALID = E.APPEALID 
  inner join ADDRESSBOOKFAF ABF on ABF.CONSTITUENTID = FT.CONSTITUENTID and ABF.CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID))
  where 
      RR.CONSTITUENTID in 
    (
          select @CONSTITUENTID
                  union
          select TE.TEAMCONSTITUENTID from TEAMFUNDRAISINGTEAMCAPTAIN  TFTC
          inner join TEAMFUNDRAISINGTEAM TFT on TFTC.TEAMFUNDRAISINGTEAMID = TFT.ID 
          inner join TEAMEXTENSION TE on TFT.ID = TE.TEAMFUNDRAISINGTEAMID 
          where TE.EVENTID = @EVENTID 
          and TFTC.CONSTITUENTID = @CONSTITUENTID 
      )
    and E.ID = @EVENTID
      and not (FT.TYPECODE = 0 and RS_EXT.APPLICATIONCODE = 1)

  if @PREVIOUSEVENTID is not null
  begin
    INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)     
    select 'Donors - previous', ABF.ID, ltrim(rtrim(replace(isnull(ABF.FIRSTNAME+' ', '') + isnull(ABF.LASTNAME, ''), '  ', ' '))), ABF.CONSTITUENTID, ABF.EMAILADDRESS 
    from REVENUERECOGNITION RR
    inner join FINANCIALTRANSACTIONLINEITEM FTLI on FTLI.ID = RR.REVENUESPLITID 
    INNER JOIN REVENUESPLIT_EXT RS_EXT on FTLI.ID = RS_EXT.ID 
    inner join FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID 
    inner join REVENUE_EXT R_EXT on R_EXT.ID = FT.ID 
    inner join EVENT E on R_EXT.APPEALID = E.APPEALID 
    inner join ADDRESSBOOKFAF ABF on ABF.CONSTITUENTID = FT.CONSTITUENTID and ABF.CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID))  
    where 
        RR.CONSTITUENTID in
      (
            select @CONSTITUENTID
                    union
            select TE.TEAMCONSTITUENTID from TEAMFUNDRAISINGTEAMCAPTAIN  TFTC
            inner join TEAMFUNDRAISINGTEAM TFT on TFTC.TEAMFUNDRAISINGTEAMID = TFT.ID 
            inner join TEAMEXTENSION TE on TFT.ID = TE.TEAMFUNDRAISINGTEAMID 
            where TE.EVENTID = @PREVIOUSEVENTID 
            and TFTC.CONSTITUENTID = @CONSTITUENTID 
        )
        and E.ID = @PREVIOUSEVENTID
        and not (FT.TYPECODE = 0 and RS_EXT.APPLICATIONCODE = 1)
  end

  INSERT INTO @MYADDRESSBOOK (GROUPNAME, ADDRESSBOOKID, NAME, CONSTITUENTID, EMAILADDRESS)    
  select 'Contacts', ID, ltrim(rtrim(replace(isnull(FIRSTNAME+' ', '') + isnull(MIDDLENAME+' ', '') + isnull(LASTNAME, ''), '  ', ' '))) as KEYNAME,    
  CONSTITUENTID, EMAILADDRESS    
  FROM dbo.ADDRESSBOOKFAF WITH (NOLOCK)    
  where CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID))    
  AND ISNULL(CONSTITUENTID,@EMPTYGUID) NOT IN (SELECT CONSTITUENTID FROM @MYADDRESSBOOK)    
  AND ISNULL(CONSTITUENTID,@EMPTYGUID) NOT IN (SELECT CONSTITUENTID FROM dbo.REGISTRANT (NOLOCK) WHERE EVENTID = @EVENTID)    

  UPDATE MA    
  SET EMAILADDRESS = E.EMAILADDRESS    
  FROM @MYADDRESSBOOK MA    
  INNER JOIN dbo.EMAILADDRESS E WITH (NOLOCK)    
  ON MA.CONSTITUENTID = E.CONSTITUENTID    
  AND E.ISPRIMARY = 1    
  WHERE MA.GROUPNAME <> 'Contacts'    

  UPDATE MA    
 SET EMAILADDRESS = (CASE WHEN ISNULL(AB.EMAILADDRESS,'') > '' THEN AB.EMAILADDRESS ELSE MA.EMAILADDRESS END),    
    ADDRESSBOOKID = AB.ID    
 FROM @MYADDRESSBOOK MA    
 INNER JOIN dbo.ADDRESSBOOKFAF AB WITH (NOLOCK)    
 ON MA.CONSTITUENTID = AB.CONSTITUENTID    
  where AB.CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@CONSTITUENTID))      

  UPDATE MA    
  SET REGISTRANTID = R.ID    
  FROM @MYADDRESSBOOK MA    
  INNER JOIN dbo.REGISTRANT R WITH (NOLOCK)    
  ON R.CONSTITUENTID = MA.CONSTITUENTID    
  AND R.EVENTID = @EVENTID    
  WHERE MA.CONSTITUENTID IS NOT NULL    

  UPDATE MA      
  SET ADDRESSBOOKID = NULL      
  FROM @MYADDRESSBOOK MA     
  WHERE ISNULL(MA.CONSTITUENTID, @EMPTYGUID) = @CONSTITUENTID  


 IF ISNULL(@SEARCHSTRING,'') > ''      
 BEGIN      
 SELECT      
  GROUPNAME,      
  CASE   
    WHEN CATEGORYSTATUS IS NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(GROUPNAME)  
    WHEN CATEGORYSTATUS IS NOT NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(CATEGORYSTATUS)  
  END AS CATEGORYSTATUS,      
  ADDRESSBOOKID,      
  NAME,      
  CONSTITUENTID,      
  EMAILADDRESS,      
  REGISTRANTID      
 FROM @MYADDRESSBOOK       
 WHERE NAME LIKE @SEARCHSTRING      
 UNION      
 SELECT      
  GROUPNAME,      
  CASE   
    WHEN CATEGORYSTATUS IS NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(GROUPNAME)  
    WHEN CATEGORYSTATUS IS NOT NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(CATEGORYSTATUS)  
  END AS CATEGORYSTATUS,      
  ADDRESSBOOKID,      
  NAME,      
  CONSTITUENTID,      
  EMAILADDRESS,      
  REGISTRANTID      
 FROM @MYADDRESSBOOK       
 WHERE GROUPNAME LIKE @SEARCHSTRING     
 END      
 ELSE      
 BEGIN      
 SELECT      
  GROUPNAME,      
  CASE   
    WHEN CATEGORYSTATUS IS NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(GROUPNAME) 
    WHEN CATEGORYSTATUS IS NOT NULL AND ADDRESSBOOKID IS NOT NULL THEN LOWER(CATEGORYSTATUS)  
  END AS CATEGORYSTATUS,      
  ADDRESSBOOKID,      
  NAME,      
  CONSTITUENTID,      
  EMAILADDRESS,      
  REGISTRANTID      
 FROM @MYADDRESSBOOK       
 END