USP_DATALIST_PROSPECT_CONSTITUENTGROUPPROSPECTPLANS

List of prospect plans for a constituent group and its members.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@GROUPID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@INCLUDEINACTIVEPLANS bit IN Include historical plans
@SITEFILTERMODE tinyint IN Sites
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_PROSPECT_CONSTITUENTGROUPPROSPECTPLANS
(
    @CURRENTAPPUSERID uniqueidentifier,
    @GROUPID uniqueidentifier,
    @INCLUDEINACTIVEPLANS bit = 0,
    @SITEFILTERMODE tinyint = 0,
    @SITESSELECTED xml = null,
    @SECURITYFEATUREID uniqueidentifier = null,
    @SECURITYFEATURETYPE tinyint = null

as begin
    set nocount on;

    declare @PROSPECTIDS table
    (
      ID uniqueidentifier,
      NAME nvarchar(700),
      PLANID uniqueidentifier
    );

    insert into @PROSPECTIDS
    select distinct
        PROSPECTPLAN.PROSPECTID ID,
        NF.NAME NAME,
        PROSPECTPLAN.ID PLANID
    from
        dbo.PROSPECTPLAN 
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTPLAN.PROSPECTID) NF
    where
        PROSPECTPLAN.PROSPECTID in 
          (
              select @GROUPID

              union all

              (select ID from dbo.UFN_GROUP_GETCURRENTMEMBERSNOPERMISSIONCHECK(@GROUPID))
          )

    union all

    select distinct
        PROSPECTPLAN.PROSPECTID ID,
        NF.NAME NAME,
        PROSPECTPLAN.ID PLANID
    from dbo.PLANPARTICIPANT
    inner join dbo.PROSPECTPLAN on PLANPARTICIPANT.PROSPECTPLANID = PROSPECTPLAN.ID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(PROSPECTPLAN.PROSPECTID) NF
    where PLANPARTICIPANT.CONSTITUENTID = @GROUPID

    declare @STEWARDIDS table
    (
      ID uniqueidentifier,
      NAME nvarchar(700),
      PLANID uniqueidentifier
    );

    insert into @STEWARDIDS
    select distinct
        STEWARDSHIPPLAN.CONSTITUENTID ID,
        NF.NAME NAME,
        STEWARDSHIPPLAN.ID PLANID
    from dbo.STEWARDSHIPPLAN
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(STEWARDSHIPPLAN.CONSTITUENTID) NF
    where 
        STEWARDSHIPPLAN.CONSTITUENTID in 
            (
                select @GROUPID

                union all

                (select ID from dbo.UFN_GROUP_GETCURRENTMEMBERSNOPERMISSIONCHECK(@GROUPID))
            )

    union all

    select distinct
        STEWARDSHIPPLAN.CONSTITUENTID ID,
        NF.NAME NAME,
        STEWARDSHIPPLAN.ID PLANID
    from dbo.STEWARDSHIPPLANSTEWARD 
    left join dbo.STEWARDSHIPPLAN on STEWARDSHIPPLANSTEWARD.PLANID = STEWARDSHIPPLAN.ID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(STEWARDSHIPPLAN.CONSTITUENTID) NF
    where STEWARDSHIPPLANSTEWARD.CONSTITUENTID = @GROUPID



    select 
        PP.ID as PLANID,
        PROSPECT.ID as PROSPECTID,
        case
            when PP.PROSPECTID = @GROUPID then 0
            else 1
        end as GROUPMEMBERPLAN,
        case
            when exists(select ID from dbo.PROSPECT where ID = PROSPECT.ID) then 1
            else 0
        end as ISPROSPECT,
        'C48113CC-888F-44da-ACE1-F22A4420CC90' as VIEWDATAFORMID,
        PP.ISACTIVE,
        0 as ISSTEWARDSHIPPLAN,
        PROSPECT.NAME as PROSPECTNAME,
        PPT.DESCRIPTION as PLANTYPE,
        PP.NAME as PLANNAME,
        dbo.UFN_PROSPECTPLAN_GETSITELIST(PP.ID) SITES,
        PP.STARTDATE,
        PP.DATEADDED
    from dbo.PROSPECTPLAN PP     
    inner join @PROSPECTIDS PROSPECT on PP.PROSPECTID = PROSPECT.ID and PROSPECT.PLANID = PP.ID
    left outer join dbo.PROSPECTPLANTYPECODE PPT on PPT.ID = PP.PROSPECTPLANTYPECODEID

    where 
        (@INCLUDEINACTIVEPLANS = 1 or PP.ISACTIVE = 1)
        and (
            select count(*
            from dbo.UFN_SITEID_MAPFROM_PROSPECTPLANID(PP.ID) as PLANSITE 
            where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PLANSITE].[SITEID] or (SITEID is null and [PLANSITE].[SITEID] is null)))
        ) > 0
        and (
            @SITEFILTERMODE = 0
                or PP.ID in (
                    select PROSPECTPLANSITE.PROSPECTPLANID
                    from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                        inner join dbo.PROSPECTPLANSITE on PROSPECTPLANSITE.SITEID = SITEFILTER.SITEID
                )
        )

    union all

    select
        STEWARDSHIPPLAN.ID as PLANID,
        STEWARD.ID as PROSPECTID,
        case
        when STEWARDSHIPPLAN.CONSTITUENTID = @GROUPID then 0
            else 1
        end as GROUPMEMBERPLAN,
        case
            when exists(select ID from dbo.PROSPECT where ID = STEWARDSHIPPLAN.CONSTITUENTID) then 1
            else 0
        end as ISPROSPECT,
        '30D20C5C-DF18-4DBD-AFDF-4A4034834563' as VIEWDATAFORMID,
        STEWARDSHIPPLAN.ISACTIVE as ISACTIVE,
        1 as ISSTEWARDSHIPPLAN,
        STEWARD.NAME as PROSPECTNAME,
        'Stewardship' as PLANTYPE,
        STEWARDSHIPPLAN.NAME as PLANNAME,
        dbo.UFN_STEWARDSHIPPLAN_GETSITELIST(STEWARDSHIPPLAN.ID) SITES,
        STEWARDSHIPPLAN.STARTDATE,
        STEWARDSHIPPLAN.DATEADDED
    from dbo.STEWARDSHIPPLAN
    inner join @STEWARDIDS STEWARD on STEWARDSHIPPLAN.CONSTITUENTID = STEWARD.ID and STEWARD.PLANID = STEWARDSHIPPLAN.ID
    where 
        (
            select count(*
            from dbo.UFN_SITEID_MAPFROM_STEWARDSHIPPLANID(STEWARDSHIPPLAN.ID) as PLANSITE 
            where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[PLANSITE].[SITEID] or (SITEID is null and [PLANSITE].[SITEID] is null)))
        ) > 0
        and (
            @SITEFILTERMODE = 0
                or STEWARDSHIPPLAN.ID in (
                    select STEWARDSHIPPLANSITE.STEWARDSHIPPLANID
                    from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                        inner join dbo.STEWARDSHIPPLANSITE on STEWARDSHIPPLANSITE.SITEID = SITEFILTER.SITEID
                )
        )

end