USP_DATALIST_MICROSITEMEMBERSHIPPROGRAMS

Lists the membership programs.

Parameters

Parameter Parameter Type Mode Description
@LIVEONLY bit IN Only show live memberships
@NAMELIKE nvarchar(512) IN Filter by program name

Definition

Copy


            CREATE procedure dbo.USP_DATALIST_MICROSITEMEMBERSHIPPROGRAMS
                (
                    @LIVEONLY bit = null,
                    @NAMELIKE nvarchar(512) = null
                ) as
                    set nocount on;

                    declare @BBNCURL nvarchar(1024) = dbo.UFN_BBNC_URL();

                    with MEMBERSHIPPROGRAM_CTE as (
                        select 
                            MEMBERSHIPPROGRAM.ID,
                            MEMBERSHIPPROGRAM.NAME,
                            MEMBERSHIPPROGRAM.DESCRIPTION,
                            ISNULL(CAST(dbo.MICROSITEPAGE.SITEPAGESID AS BIT), 0) AS ISBASICCMS,
                            [LIVESTATUS].[ISLIVE],
                            MICROSITEPAGE.SITEPAGESID AS SITEPAGESID,
                            CASE WHEN ISNULL(CAST(MICROSITEPAGE.SITEPAGESID AS BIT), 0) = 1 then @BBNCURL + (SELECT TOP 1 VanityURL from dbo.VanityURL where PageID= MICROSITEPAGE.SITEPAGESID) ELSE '' END AS URL,
                            MICROSITEPAGE.PRIMARYCONTENTID AS PRIMARYCONTENTID,
                            [NAMEMATCH].[ISMATCH] as [NAMEISMATCH],
                            [MEMBERSHIPPROGRAM].[ISACTIVE],
                            MEMBERSHIPPROGRAM.PROGRAMTYPECODE,
                            MEMBERSHIPPROGRAM.PROGRAMBASEDONCODE,
                            case when (MEMBERSHIPPROGRAM.PROGRAMTYPECODE = 0 and MEMBERSHIPPROGRAM.PROGRAMBASEDONCODE = 0) then 1
                            else 0
                            end as ISANNUALDUESBASED,
                            MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE.ID as MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATEID,
                            coalesce(MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE.ACTIVE, 0) as HASACTIVEACKNOWLEDGEMENTEMAIL
                        from dbo.MEMBERSHIPPROGRAM
                        left join dbo.MICROSITEPAGE
                            on (MICROSITEPAGE.OBJECTID = MEMBERSHIPPROGRAM.ID) and (MICROSITEPAGE.EXCLUDED = 0)
                        left outer join dbo.MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE
                            on MEMBERSHIPPROGRAM.ID = MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATE.MEMBERSHIPPROGRAMID
                        cross apply (
                            select case
                                    when (ISNULL(CAST(MICROSITEPAGE.SITEPAGESID AS BIT), 0) = 1) and (MEMBERSHIPPROGRAM.ISACTIVE = 1)
                                        then 1
                                    else 0
                            end AS ISLIVE
                        ) as [LIVESTATUS]
                        cross apply (
                            select case
                                when (coalesce(@NAMELIKE, '%%') = '%%') then 1
                                when (MEMBERSHIPPROGRAM.NAME like '%' + @NAMELIKE + '%') then 1
                                else 0
                            end as [ISMATCH]
                        ) as [NAMEMATCH]
                        where 
                            ((coalesce(@LIVEONLY, 0) = 0) or [LIVESTATUS].[ISLIVE] = 1
                    ),
                    MEMBERSHIPLEVEL_CTE as (
                        select
                            MEMBERSHIPLEVEL.ID,
                            MEMBERSHIPLEVEL.NAME,
                            MEMBERSHIPLEVEL.DESCRIPTION,
                            case when MEMBERSHIPPROGRAM.[ISBASICCMS] = 1 and [MICROSITEMEMBERSHIPLEVEL].[ID] is not null then 1 else 0 end as [ISBASICCMS],
                            [LIVESTATUS].[ISLIVE],
                            MEMBERSHIPPROGRAM.SITEPAGESID,
                            MEMBERSHIPPROGRAM.URL + '?mpl=' + cast(MEMBERSHIPLEVEL.ID as nvarchar(36)) as [URL],
                            MEMBERSHIPPROGRAM.PRIMARYCONTENTID,
                            [MEMBERSHIPPROGRAM].[ID] as [MEMBERSHIPPROGRAMID],
                            MEMBERSHIPPROGRAM.[ISLIVE] as [MEMBERSHIPPROGAMISLIVE],
                            [MEMBERSHIPLEVEL].[ISACTIVE],
                            [MEMBERSHIPPROGRAM].[NAME] as [MEMBERSHIPPROGRAMNAME],
                            case when ([MEMBERSHIPPROGRAM].PROGRAMTYPECODE = 0 and [MEMBERSHIPPROGRAM].PROGRAMBASEDONCODE = 0) then 1
                            else 0
                            end as ISANNUALDUESBASED,
                            [MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE].[ID] as [MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATEID],
                            coalesce([MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE].[ACTIVE], 0) as HASACTIVEACKNOWLEDGEMENTEMAIL
                        from dbo.[MEMBERSHIPLEVEL]
                        inner join MEMBERSHIPPROGRAM_CTE as [MEMBERSHIPPROGRAM]
                            on [MEMBERSHIPLEVEL].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
                        left join dbo.[MICROSITEMEMBERSHIPLEVEL]
                            on [MEMBERSHIPLEVEL].[ID] = [MICROSITEMEMBERSHIPLEVEL].[ID]
                        left outer join dbo.[MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE]
                            on [MEMBERSHIPLEVEL].[ID] = [MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATE].MEMBERSHIPLEVELID
                        cross apply (
                            select case 
                                    when (
                                                [MEMBERSHIPLEVEL].[ISACTIVE] = 1 and 
                                                [MICROSITEMEMBERSHIPLEVEL].[ID] is not null and 
                                                MEMBERSHIPPROGRAM.ISLIVE = 1
                                            ) then 1 
                                    else 0 
                                end 
                            as [ISLIVE]
                        ) as [LIVESTATUS]
                        where 
                            ((coalesce(@LIVEONLY, 0) = 0) or [LIVESTATUS].[ISLIVE] = 1) and
                            (
                                [MEMBERSHIPPROGRAM].[NAMEISMATCH] = 1 or --If the membership program name is a match, we should show all of the levels under it.

                                MEMBERSHIPLEVEL.NAME like '%' + @NAMELIKE + '%'
                            )
                    )
                    select 
                        MEMBERSHIPPROGRAM.ID,
                        MEMBERSHIPPROGRAM.NAME,
                        MEMBERSHIPPROGRAM.DESCRIPTION,
                        MEMBERSHIPPROGRAM.ISBASICCMS,
                        MEMBERSHIPPROGRAM.[ISLIVE],
                        MEMBERSHIPPROGRAM.SITEPAGESID,
                        MEMBERSHIPPROGRAM.URL,
                        MEMBERSHIPPROGRAM.PRIMARYCONTENTID,
                        null as PARENTID,
                        MEMBERSHIPPROGRAM.[ISLIVE] as [MEMBERSHIPPROGAMISLIVE],
                        cast(0 as bit) as ISLEVEL,
                        [ISACTIVE],
                        '50a7cb9a-a8b5-4bd7-95ec-7dac491241d9' as [DETAILVIEWID],
                        MEMBERSHIPPROGRAM.NAME as MEMBERSHIPPROGRAMNAME,
                        MEMBERSHIPPROGRAM.ISANNUALDUESBASED,
                        MEMBERSHIPPROGRAM_MICROSITEEMAILTEMPLATEID as MICROSITEEMAILTEMPLATEID,
                        HASACTIVEACKNOWLEDGEMENTEMAIL
                    from [MEMBERSHIPPROGRAM_CTE] as [MEMBERSHIPPROGRAM]
                    where exists(
                        select 1 
                        from [MEMBERSHIPLEVEL_CTE] as [MEMBERSHIPLEVEL] --Filter programs if there are no program levels meeting the name/live filter rules

                        where [MEMBERSHIPLEVEL].[MEMBERSHIPPROGRAMID] = [MEMBERSHIPPROGRAM].[ID]
                    )

                    union all
                    select
                        ID,
                        NAME,
                        DESCRIPTION,
                        [ISBASICCMS],
                        [ISLIVE],
                        SITEPAGESID,
                        URL,
                        PRIMARYCONTENTID,
                        MEMBERSHIPPROGRAMID as PARENTID,
                        [MEMBERSHIPPROGAMISLIVE],
                        cast(1 as bit) as ISLEVEL,
                        [ISACTIVE],
                        'C102D789-EFA6-4AE4-895F-53A1F110301B' as [DETAILVIEWID],
                        [MEMBERSHIPPROGRAMNAME],
                        ISANNUALDUESBASED,
                        MEMBERSHIPLEVEL_MICROSITEEMAILTEMPLATEID as MICROSITEEMAILTEMPLATEID,
                        HASACTIVEACKNOWLEDGEMENTEMAIL
                    from [MEMBERSHIPLEVEL_CTE]
                    order by MEMBERSHIPPROGRAMNAME, ISLEVEL asc, NAME