USP_CONSTITUENTDUPLICATESEARCHPROCESS_GETRECORDS_FORCURRENTAPPUSER

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN
@TABLE_NAME nvarchar(256) IN
@USER_TABLENAME nvarchar(256) IN

Definition

Copy


CREATE procedure USP_CONSTITUENTDUPLICATESEARCHPROCESS_GETRECORDS_FORCURRENTAPPUSER
(
    @CURRENTAPPUSERID uniqueidentifier,
    @TABLE_NAME nvarchar(256),
    @USER_TABLENAME nvarchar(256)
)
AS

declare @APPUSER_IN_NOSITEROLE bit = dbo.UFN_SECURITY_APPUSER_IN_NO_SITE_ROLE(@CURRENTAPPUSERID);

if object_id('tempdb..#TEMP_DUPESINSITE') is not null
    drop table #TEMP_DUPESINSITE;

create table #TEMP_DUPESINSITE
(
    NUMBEROFRECORDS int,
    KEYCONSTITID uniqueidentifier
);

        declare @SQLTOEXEC nvarchar(max);

        --Create user specific table

        set @SQLTOEXEC = 'If OBJECT_ID(''' + @USER_TABLENAME + ''', ''U'') IS NOT NULL 
                                         DROP TABLE ' + @USER_TABLENAME + ';

                                        CREATE TABLE ' + @USER_TABLENAME + '
                                        (
                                            _key_in int identity(0,1),
                                            _key_out int,
                                            _score real,
                                            _key_CONSTITID uniqueidentifier,
                                            CONSTITID uniqueidentifier
                                        );'


                set @SQLTOEXEC += 'insert into #TEMP_DUPESINSITE select count(*),_key_constitid from 
                                                     ' + @TABLE_NAME + ' dupes 
                                                        where dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, dupes.CONSTITID, @APPUSER_IN_NOSITEROLE) = 1
                                                        group by _key_constitid having count(*) > 1;

                --Push site secure matched constituent to user specific table

                insert into ' + @USER_TABLENAME + ' (_key_CONSTITID,CONSTITID,_score)
                select dupes._key_CONSTITID, dupes.CONSTITID, dupes._score 
                from ' + @TABLE_NAME + ' dupes 
                    left join dbo.CONSTITUENT c on c.ID = dupes._key_CONSTITID 
                    left outer join dbo.ADDRESS a on a.CONSTITUENTID = c.ID and a.ISPRIMARY = 1 
                    inner join #TEMP_DUPESINSITE tmp on tmp.KEYCONSTITID = dupes._key_constitid
                    where dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, dupes._key_constitid, @APPUSER_IN_NOSITEROLE) = 1
                    and dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT_BYSITE(@CURRENTAPPUSERID, dupes.CONSTITID, @APPUSER_IN_NOSITEROLE) = 1
                    order by dupes._key_in;

                    --Get records for processing later in CLR stored procedure

                    select * from ' + @USER_TABLENAME + ';'

                    exec sp_executesql @SQLTOEXEC, N'@CURRENTAPPUSERID uniqueidentifier,@TABLE_NAME  nvarchar(256),@APPUSER_IN_NOSITEROLE bit, @USER_TABLENAME nvarchar(256)',
                    @CURRENTAPPUSERID = @CURRENTAPPUSERID, @TABLE_NAME = @TABLE_NAME,@APPUSER_IN_NOSITEROLE=@APPUSER_IN_NOSITEROLE,@USER_TABLENAME=@USER_TABLENAME;