UFN_GROUP_GETCURRENTMEMBERS

Returns the current members of a constituent group including itself.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@DATAFORMINSTANCEID uniqueidentifier IN
@INCLUDEGROUP bit IN

Definition

Copy


            CREATE function dbo.UFN_GROUP_GETCURRENTMEMBERS
            (
                @GROUPID uniqueidentifier,
                @CURRENTAPPUSERID uniqueidentifier = null,
                @DATAFORMINSTANCEID uniqueidentifier = null,
                @INCLUDEGROUP bit = 1
            )
            returns @members table
            (
                ID uniqueidentifier,
                NAME nvarchar(700)
            )
            as
            begin
                if @INCLUDEGROUP = 1
                    insert into @members
                    (
                        ID,
                        NAME
                    )
                    select
                        @GROUPID,
                        NF.NAME
                    from dbo.UFN_CONSTITUENT_DISPLAYNAME(@GROUPID) NF

                declare @CURRENTDATE date;
                set @CURRENTDATE = getdate();

                insert into @members
                (
                    ID,
                    NAME
                )
                select
                    GM.MEMBERID,
                    NF.NAME
                from dbo.GROUPMEMBER GM
                    left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(GM.MEMBERID) NF
                where
                    GM.GROUPID = @GROUPID
                    -- the GMDR.DATETO is set to the earliest time on that day, so use a strictly greater than in checks using current day

                    and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                    or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                    or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))
                    and 
                    (
                    (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1) or
                    (dbo.UFN_SECURITY_APPUSER_GRANTED_FORM_FORCONSTIT(@CURRENTAPPUSERID, @DATAFORMINSTANCEID, GM.MEMBERID) = 1)
                    )

                return
            end