USP_DATALIST_WPCONTACTINFORMATION

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@INCLUDEFORMER bit IN
@INCLUDEADDRESSES bit IN
@INCLUDEPHONES bit IN
@INCLUDEEMAIL bit IN
@INCLUDESOCIAL bit IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_WPCONTACTINFORMATION 
(
    @CONSTITUENTID uniqueidentifier, 
    @INCLUDEFORMER bit    = 0,
    @INCLUDEADDRESSES bit = 1,
    @INCLUDEPHONES bit = 1,
    @INCLUDEEMAIL bit = 1,
  @INCLUDESOCIAL bit = 1
)
as
    set nocount on;

    declare @CURRENTDATE datetime = dbo.UFN_DATE_GETEARLIESTTIME(getdate());
    declare @ADDRESSCONTEXTVIEWFORM uniqueidentifier = '78f27fdf-6696-48cc-b6dc-85da47616c1b';
    declare @EMAILADDRESSCONTEXTVIEWFORM uniqueidentifier = 'e7c71f82-6faa-47f2-a3c3-3320f3cc6630';
    declare @PHONECONTEXTVIEWFORM uniqueidentifier = 'e40ebe2f-bbbd-485e-80bf-107a8e2cdf2b';
    declare @MAPENTITYID uniqueidentifier = N'645E6BE7-459C-402b-A03C-67587CA72B94';

    if (dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('6f77d512-d0d1-444f-9b46-b8603a6fe5f1') = 1)
        set @MAPENTITYID = N'78102CE5-F217-4429-9175-D99A6B55A4EE';


    with [CONTACTINFO_CTE] as
    (
        --Addresses

        select 
            ADDRESS.ID,
            'Address' as CONTACTTYPE,
            0 as CONTACTTYPECODE,
            @ADDRESSCONTEXTVIEWFORM as VIEWFORMID,
            ADDRESS.DESCRIPTION as CONTACTINFO,
            ADDRESS.ISPRIMARY,
            ADDRESS.ISCONFIDENTIAL,
            ADDRESS.HISTORICALSTARTDATE as STARTDATE,
            ADDRESS.HISTORICALENDDATE as ENDDATE,
            case when ADDRESS.HISTORICALSTARTDATE is null then '0001-01-01' else ADDRESS.HISTORICALSTARTDATE end as [STARTDATE_SORT],
            case when ADDRESS.HISTORICALENDDATE is null then '0001-01-01' else ADDRESS.HISTORICALENDDATE end as [ENDDATE_SORT],
            ADDRESS.DATEADDED,
            ADDRESSCOORDINATES.ID as ADDRESSCOORDINATESID,
            ADDRESSCOORDINATES.PENDINGGEOCODE,
            ADDRESSCOORDINATES.INVALIDGEOCODE,
            dbo.UFN_MAPPING_BUILDCONTEXTRECORDID(@MAPENTITYID, @CONSTITUENTID, ADDRESS.ID) as [MAPCONTEXTID],
            0 as INVALIDEMAIL,
      null as MEDIAURL,
      ADDRESS.DONOTMAIL as DONOTCONTACT
        from dbo.ADDRESS
            left join dbo.ADDRESSCOORDINATES on ADDRESSCOORDINATES.ADDRESSID = ADDRESS.ID
        where @INCLUDEADDRESSES = 1 
            and ADDRESS.CONSTITUENTID = @CONSTITUENTID

        union all

        --Emails

        select
            EMAILADDRESS.ID,
            'Email' as CONTACTTYPE,
            1 as CONTACTTYPECODE,
            @EMAILADDRESSCONTEXTVIEWFORM as VIEWFORMID,
            EMAILADDRESS.EMAILADDRESS as CONTACTINFO,
            EMAILADDRESS.ISPRIMARY,
            0 as ISCONFIDENTIAL,
            EMAILADDRESS.STARTDATE,
            EMAILADDRESS.ENDDATE,
            case when EMAILADDRESS.STARTDATE is null then '0001-01-01' else cast(EMAILADDRESS.STARTDATE as date) end as [STARTDATE_SORT],
            case when EMAILADDRESS.ENDDATE is null then '0001-01-01' else cast(EMAILADDRESS.ENDDATE as date) end as [ENDDATE_SORT],
            EMAILADDRESS.DATEADDED,
            null as ADDRESSCOORDINATESID,
            null as PENDINGGEOCODE,
            null as INVALIDGEOCODE,
            null as MAPCONTEXTID,
            case when EXISTS(SELECT ID FROM dbo.EMAILINVALIDRECIPIENT WHERE EMAILINVALIDRECIPIENT.ADDRESS = EMAILADDRESS.EMAILADDRESS AND EMAILINVALIDRECIPIENT.ISBLACKLISTED = 1) then 1 else 0 end as INVALIDEMAIL,
      null as MEDIAURL,
      EMAILADDRESS.DONOTEMAIL as DONOTCONTACT
        from dbo.EMAILADDRESS
        where @INCLUDEEMAIL = 1 
            and EMAILADDRESS.CONSTITUENTID = @CONSTITUENTID

        union all

        --Phones

        select
            PHONE.ID,
            'Phone number' as CONTACTTYPE,
            2 as CONTACTTYPECODE,
            @PHONECONTEXTVIEWFORM as VIEWFORMID,
            dbo.UFN_PHONE_GETINTERNATIONALNUMBER(PHONE.COUNTRYID, PHONE.NUMBER) as CONTACTINFO,
            PHONE.ISPRIMARY,
            PHONE.ISCONFIDENTIAL as ISCONFIDENTIAL,
            PHONE.STARTDATE,
            PHONE.ENDDATE,
            case when PHONE.STARTDATE is null then '0001-01-01' else cast(PHONE.STARTDATE as date) end as [STARTDATE_SORT],
            case when PHONE.ENDDATE is null then '0001-01-01' else cast(PHONE.ENDDATE as date) end as [ENDDATE_SORT],
            PHONE.DATEADDED,
            null as ADDRESSCOORDINATESID,
            null as PENDINGGEOCODE,
            null as INVALIDGEOCODE,
            null as MAPCONTEXTID,
            0 as INVALIDEMAIL,
      null as MEDIAURL,
      PHONE.DONOTCALL as DONOTCONTACT
        from dbo.PHONE
        where @INCLUDEPHONES = 1 
            and PHONE.CONSTITUENTID = @CONSTITUENTID

        union all

        --Social

        select
            SOCIALMEDIAACCOUNT.ID,
            'Social media account' as CONTACTTYPE,
            3 as CONTACTTYPECODE,
            null as VIEWFORMID,
          case when len(SOCIALMEDIAACCOUNT.USERID) = 0 
              then SOCIALMEDIASERVICE.NAME
              else SOCIALMEDIASERVICE.NAME + N' (' + SOCIALMEDIAACCOUNT.USERID + N') ' 
        end as CONTACTINFO,
            0 ISPRIMARY,
            0 as ISCONFIDENTIAL,
            null as STARTDATE,
            null as ENDDATE,
            '0001-01-01' as [STARTDATE_SORT],
            '0001-01-01' as [ENDDATE_SORT],
            SOCIALMEDIAACCOUNT.DATEADDED,
            null as ADDRESSCOORDINATESID,
            null as PENDINGGEOCODE,
            null as INVALIDGEOCODE,
            null as MAPCONTEXTID,
            0 as INVALIDEMAIL,
      SOCIALMEDIAACCOUNT.URL as MEDIAURL,
      SOCIALMEDIAACCOUNT.DONOTCONTACT as DONOTCONTACT
        from dbo.SOCIALMEDIAACCOUNT
    inner join dbo.SOCIALMEDIASERVICE on SOCIALMEDIAACCOUNT.SOCIALMEDIASERVICEID = SOCIALMEDIASERVICE.ID
    left join dbo.SOCIALMEDIAACCOUNTTYPECODE on SOCIALMEDIAACCOUNT.SOCIALMEDIAACCOUNTTYPECODEID = SOCIALMEDIAACCOUNTTYPECODE.ID
        where @INCLUDESOCIAL = 1 
            and SOCIALMEDIAACCOUNT.CONSTITUENTID = @CONSTITUENTID

    )

    select 
        ID,
        CONTACTTYPE,
        CONTACTTYPECODE,
        VIEWFORMID,
        case when ISCONFIDENTIAL = 0
            then CONTACTINFO
            else N'(Confidential) ' + CONTACTINFO
        end as CONTACTINFO,
        case when ISPRIMARY = 0 then '' else 'Yes' end as ISPRIMARY,
        ISCONFIDENTIAL,
        case when ((ENDDATE is null) or (ENDDATE > @CURRENTDATE)) then 0 else 1 end as ISFORMER,
        STARTDATE,
        ENDDATE,
        case when ADDRESSCOORDINATESID is null or PENDINGGEOCODE = 1 or INVALIDGEOCODE = 1 then 0 else 1 end as ISGEOCODED,
        case when ADDRESSCOORDINATESID is null then 0 else PENDINGGEOCODE end as PENDINGGEOCODE,
        case when ADDRESSCOORDINATESID is null then 0 else INVALIDGEOCODE end as INVALIDGEOCODE,
        MAPCONTEXTID,        
        case when ISCONFIDENTIAL = 1
                then 'RES:padlock'
            when DONOTCONTACT = 1
                then 'RES:warning'
            when INVALIDEMAIL = 1  
                then 'RES:do_not_symbol'
            else 'RES:lv_spacer'
        end as IMAGEKEY,
        INVALIDEMAIL,
    MEDIAURL
    from [CONTACTINFO_CTE]
    where (@INCLUDEFORMER = 1 or ((ENDDATE is null) or (ENDDATE > @CURRENTDATE)))
    order by CONTACTTYPE, ISPRIMARY desc, ISFORMER asc, ENDDATE_SORT desc, STARTDATE_SORT desc, DATEADDED desc