USP_DATALIST_RESEARCHGROUPS

Lists the research groups available in the system.

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@NAME nvarchar(100) IN Name
@ADDEDBY nvarchar(128) IN Added by
@DATEADDEDCODE smallint IN Date added
@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_RESEARCHGROUPS (
                    @CURRENTAPPUSERID uniqueidentifier,
                    @NAME nvarchar(100) = null,
                    @ADDEDBY nvarchar(128) = null,
                    @DATEADDEDCODE smallint = null,

                    @SITEFILTERMODE tinyint = 0,
                    @SITESSELECTED xml = null,

                    @SECURITYFEATUREID uniqueidentifier = null,
                    @SECURITYFEATURETYPE tinyint = null
                ) as
                    set nocount on;

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

                    declare @STARTDATE datetime;
                    if @DATEADDEDCODE = 1 --Last 7 days

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-6,@CURRENTDATE));
                    else if @DATEADDEDCODE = 2 --Last 30 days

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-29,@CURRENTDATE));
                    else if @DATEADDEDCODE = 3 --Last 90 days

                        set @STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(dateadd(day,-89,@CURRENTDATE));
                    else
                        set @STARTDATE = @CURRENTDATE;

                    declare @ENDDATE datetime;
                    set @ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE);

                    declare @SITES table (SITEID uniqueidentifier);
                    if @SECURITYFEATUREID is not null
                        insert into @SITES
                        select S.SITEID
                        from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) [S]  

                    select
                        RG.ID,
                        RG.NAME,
                        RG.DESCRIPTION,
                        RG.NUMMEMBERS,
                        RG.OWNERID,
                        AU.USERNAME OWNER,
                        CA.USERNAME ADDEDBY,
                        RG.DATEADDED,
                        case when (
                            RG.OTHERSCANMODIFY = 1 or
                            RG.OWNERID = @CURRENTAPPUSERID or
                            RG.OWNERID is null or
                            dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1) then 1
                            else 0
                            end USERCANMODIFY,
                        (
                            select dbo.UDA_BUILDLIST(SITE.NAME) 
                            from dbo.RESEARCHGROUPSITE
                            inner join dbo.SITE on SITE.ID = RESEARCHGROUPSITE.SITEID
                            where RESEARCHGROUPSITE.RESEARCHGROUPID = RG.ID
                        ) as [SITES]
                    from
                        dbo.RESEARCHGROUP RG
                    left join
                        dbo.APPUSER AU on AU.ID = RG.OWNERID
                    left join
                        dbo.CHANGEAGENT CA on CA.ID = RG.ADDEDBYID
                    where
                        ((@NAME is null or @NAME = '') or RG.NAME like '%' + @NAME + '%')
                        and ((@ADDEDBY is null or @ADDEDBY = '') or @ADDEDBY = CA.USERNAME)
                        and (@DATEADDEDCODE is null or not @DATEADDEDCODE in (1,2,3) or (RG.DATEADDED >= @STARTDATE and RG.DATEADDED <= @ENDDATE))
                        and (@SECURITYFEATUREID is null 
                                or exists(SELECT SITELIST.SITEID 
                                            from dbo.UFN_SITEID_MAPFROM_RESEARCHGROUPID(RG.ID) RGS
                                            inner join @SITES SITELIST 
                                            on 
                                                SITELIST.SITEID = RGS.SITEID
                                                    or 
                                                (SITELIST.SITEID is null and RGS.SITEID is null)
                                        )
                            )
                        and
                            (--Apply user-defined site filtering 

                                @SITEFILTERMODE = 0 
                                or 
                                exists (select ID from dbo.RESEARCHGROUPSITE RGS 
                                        inner join dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) S on S.SITEID = RGS.SITEID
                                        where RGS.RESEARCHGROUPID = RG.ID) 
                            )
                    order by RG.NAME