USP_CONSTITUENT_FUZZY_LOOKUP_AUTOMATCH

Parameters

Parameter Parameter Type Mode Description
@TRANSACTIONTYPE nvarchar(512) IN
@EMAILADDRESS_EMAILADDRESS UDT_EMAILADDRESS IN
@LASTNAME nvarchar(100) IN
@FIRSTNAME nvarchar(50) IN
@MAIDENNAME nvarchar(100) IN
@MIDDLENAME nvarchar(50) IN
@ADDRESS_ADDRESSBLOCK nvarchar(150) IN
@ADDRESS_CITY nvarchar(100) IN
@ADDRESS_COUNTRYID uniqueidentifier IN
@ADDRESS_STATEID uniqueidentifier IN
@ADDRESS_POSTCODE nvarchar(12) IN
@PHONE_NUMBER nvarchar(100) IN
@BIRTHDATE UDT_FUZZYDATE IN
@GENDERCODE tinyint IN
@LOOKUPID nvarchar(20) IN
@INACTIVE bit IN
@DECEASED bit IN
@MAXROWS int IN
@EVENTID uniqueidentifier IN

Definition

Copy


CREATE PROCEDURE [dbo].[USP_CONSTITUENT_FUZZY_LOOKUP_AUTOMATCH]
(
      @TRANSACTIONTYPE                nvarchar(512)    = 'FAF Registration'
     ,@EMAILADDRESS_EMAILADDRESS    dbo.UDT_EMAILADDRESS = ''                
     ,@LASTNAME                        nvarchar(100)    = ''
     ,@FIRSTNAME                    nvarchar(50)    = ''
     ,@MAIDENNAME                    nvarchar(100)    = ''
     ,@MIDDLENAME                    nvarchar(50)    = ''
     ,@ADDRESS_ADDRESSBLOCK            nvarchar(150)    = ''
     ,@ADDRESS_CITY                    nvarchar(100)    = ''
     ,@ADDRESS_COUNTRYID            uniqueidentifier= null
     ,@ADDRESS_STATEID                uniqueidentifier= null
     ,@ADDRESS_POSTCODE                nvarchar(12)    = ''    
     ,@PHONE_NUMBER                    nvarchar(100)    = '' -- Any phone

     ,@BIRTHDATE                    AS  dbo.UDT_FUZZYDATE = ''
     ,@GENDERCODE                    tinyint            = null
     ,@LOOKUPID                        nvarchar(20)    = ''     
     ,@INACTIVE                        bit                = 0
     ,@DECEASED                        bit                = 0
     ,@MAXROWS                        integer            = 1           
     ,@EVENTID            uniqueidentifier= null

)
AS
BEGIN

    SET NOCOUNT ON;

    DECLARE @MAXROWS_I AS INTEGER;

    DECLARE @CONSTITUENTS AS TABLE(
         [CONSTITUENTID]    uniqueidentifier
        ,[FIRSTNAME]        nvarchar(100)    
        ,[LASTNAME]            nvarchar(100)
        ,[MATCHPERCENTAGE]    decimal(20,2)
    ) 

    INSERT @CONSTITUENTS
    (
         [CONSTITUENTID]            
        ,[FIRSTNAME]    
        ,[LASTNAME]            
        ,[MATCHPERCENTAGE]    
    )
    EXEC [dbo].[USP_CONSTITUENT_FUZZY_LOOKUP]
      @TRANSACTIONTYPE                =@TRANSACTIONTYPE
     ,@EMAILADDRESS_EMAILADDRESS    =@EMAILADDRESS_EMAILADDRESS            
     ,@LASTNAME                        =@LASTNAME
     ,@FIRSTNAME                    =@FIRSTNAME
     ,@MAIDENNAME                    =@MAIDENNAME
     ,@MIDDLENAME                    =@MIDDLENAME
     ,@ADDRESS_ADDRESSBLOCK            =@ADDRESS_ADDRESSBLOCK
     ,@ADDRESS_CITY                    =@ADDRESS_CITY
     ,@ADDRESS_COUNTRYID                =@ADDRESS_COUNTRYID          
     ,@ADDRESS_STATEID                =@ADDRESS_STATEID
     ,@ADDRESS_POSTCODE                =@ADDRESS_POSTCODE    
     ,@PHONE_NUMBER                    =@PHONE_NUMBER
     ,@BIRTHDATE                    =@BIRTHDATE
     ,@GENDERCODE                        =@GENDERCODE
     ,@LOOKUPID                        =@LOOKUPID 
     ,@INACTIVE                        =@INACTIVE    
     ,@DECEASED                        =@DECEASED
     ,@MAXROWS                        =@MAXROWS
   ,@EVENTID            =@EVENTID;                

    -- CMS Clients linked to Constituents (ECRM records)

    WITH [CTE_CLIENTCONSTITUENTS]
    AS
    (    
        SELECT    
             C.ID            AS [CONSTITUENTID]
            ,cu.ID            AS [CLIENTUSERID]
            ,cu.UserName    AS [CLIENTUSERNAME]
            ,cu.[Password]    AS [CLIENTPASSWORD]
        FROM    dbo.ClientUsers cu  (NOLOCK)
        INNER    JOIN dbo.BackOfficeSystemUsers bosu (NOLOCK)
        ON        cu.ID = bosu.ClientUsersID AND bosu.[current] = 1 AND cu.Deleted = 0  
        INNER    JOIN dbo.BackOfficeSystemPeople bosp (NOLOCK)
        ON        bosp.ID = bosu.BackofficePeopleID AND bosp.BackOfficeSystemID = 0  
        INNER    JOIN dbo.CONSTITUENT C (NOLOCK)
        ON        bosp.BackofficeRecordID = C.SEQUENCEID    
    ) 
    -- Constituents with CMS accounts

    ,[CTE_AUTHENTICATED_CLIENTS]
    AS (
        SELECT    TOP(@MAXROWS)        
             V1.CONSTITUENTID
            ,V1.FIRSTNAME
            ,V1.LASTNAME
            ,V1.CLIENTUSERID
            ,V1.CLIENTUSERNAME
            ,V1.[CLIENTPASSWORD]
      ,V1.DISPLAYNAME
      ,V1.PROVIDERNAME
      ,V1.IDENTIFIER
    FROM (
          SELECT
               FL.CONSTITUENTID
              ,FL.FIRSTNAME
              ,FL.LASTNAME
              ,C.CLIENTUSERID
              ,C.CLIENTUSERNAME
              ,C.[CLIENTPASSWORD]
        ,FL.[MATCHPERCENTAGE]
        ,NULL AS DISPLAYNAME
        ,NULL AS PROVIDERNAME
        ,NULL AS IDENTIFIER
          FROM    @CONSTITUENTS FL
          INNER    JOIN [CTE_CLIENTCONSTITUENTS] C ON FL.CONSTITUENTID = C.CONSTITUENTID    
      WHERE C.CLIENTUSERNAME NOT LIKE 'SocialWeb_%'     -- system auto-generate SocialWeb_<PKID> for username


      UNION

           SELECT
               FL.CONSTITUENTID
              ,FL.FIRSTNAME
              ,FL.LASTNAME
              ,C.CLIENTUSERID
              ,C.CLIENTUSERNAME
              ,C.[CLIENTPASSWORD]
        ,FL.[MATCHPERCENTAGE]
        ,Ext.DISPLAYNAME
        ,Ext.PROVIDERNAME
        ,Ext.IDENTIFIER
          FROM    @CONSTITUENTS FL
          LEFT    JOIN [CTE_CLIENTCONSTITUENTS] C ON FL.CONSTITUENTID = C.CONSTITUENTID    
      LEFT JOIN ClientUsersExtension Ext ON Ext.ClientUserID = C.CLIENTUSERID
    ) V1
        ORDER    BY [MATCHPERCENTAGE] DESC
    )

    SELECT * FROM [CTE_AUTHENTICATED_CLIENTS];

    SET NOCOUNT OFF;
END