USP_DATALIST_CONSTITUENTATTRIBUTEDATA

Returns constituent attribute data

Parameters

Parameter Parameter Type Mode Description
@ATTRIBUTECATALOGID uniqueidentifier IN AttributeCatalogID
@CONSTITUENTID uniqueidentifier IN ContituentID

Definition

Copy


CREATE procedure dbo.USP_DATALIST_CONSTITUENTATTRIBUTEDATA
(
    @ATTRIBUTECATALOGID uniqueidentifier,
    @CONSTITUENTID uniqueidentifier
)
as
    set nocount on;

    DECLARE @ID varchar(32)
    DECLARE @DATATYPE tinyint
    DECLARE @CODETABLEDBTABLENAME varchar(200)
    DECLARE @CODETABLECATALOGID uniqueidentifier
    DECLARE @ONLYALLOWONEPERRECORD bit

    select @DATATYPE=DATATYPECODE,@CODETABLECATALOGID=CODETABLECATALOGID from ATTRIBUTECATEGORY WHERE ID=@ATTRIBUTECATALOGID

    SELECT @CODETABLEDBTABLENAME=DBTABLENAME FROM CODETABLECATALOG WHERE ID=@CODETABLECATALOGID

    SELECT @ONLYALLOWONEPERRECORD=ONLYALLOWONEPERRECORD FROM ATTRIBUTECATEGORY WHERE ID=@ATTRIBUTECATALOGID

    SET @ID=replace(CAST(@ATTRIBUTECATALOGID as CHAR(36)),'-','')

      DECLARE @sqlCommand nvarchar(4000)

      SET @sqlCommand='SELECT TOP 1 '

      if @DATATYPE=4
          SET @sqlCommand=@sqlCommand + 'A.ID,A.BOOLEANCODE AS Value from ATTRIBUTE'
      else if @DATATYPE=5 and @ONLYALLOWONEPERRECORD=1
          SET @sqlCommand=@sqlCommand + 'A.ID, dbo.UFN_'+@CODETABLEDBTABLENAME+'_GETDESCRIPTION(A.'+@CODETABLEDBTABLENAME+'ID) as VALUE from ATTRIBUTE'
      else if @DATATYPE=5 and @ONLYALLOWONEPERRECORD=0
          SET @sqlCommand=@sqlCommand + 'A.ID,B.DESCRIPTION AS VALUE from ATTRIBUTE'
      else if @DATATYPE=6
          SET @sqlCommand=@sqlCommand + 'A.ID,CAST(A.CONSTITUENTVALUEID as CHAR(36)) AS Value from ATTRIBUTE'
      else
          SET @sqlCommand=@sqlCommand + 'A.ID,A.Value from ATTRIBUTE'

    SET @sqlCommand=@sqlCommand + @ID+' A '

    if @DATATYPE=5 and @ONLYALLOWONEPERRECORD=0
          set @sqlCommand=@sqlCommand+' INNER JOIN '+@CODETABLEDBTABLENAME+' AS B ON A.'+@CODETABLEDBTABLENAME+'ID=B.ID'

    IF @ONLYALLOWONEPERRECORD=1
          SET @sqlCommand=@sqlCommand + ' where A.ID='''
    ELSE      
          SET @sqlCommand=@sqlCommand + ' where A.CONSTITUENTID='''

    SET @sqlCommand=@sqlCommand + CAST(@CONSTITUENTID as CHAR(36)) + ''''

    SET @sqlCommand=@sqlCommand + ' ORDER BY A.DATECHANGED DESC'

    exec sp_executesql @sqlCommand