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