UFN_QUERY_EXPORTDEFINITIONLIST

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENTAPPUSERID uniqueidentifier IN
@SITEFILTERMODE tinyint IN
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy


create function dbo.UFN_QUERY_EXPORTDEFINITIONLIST
(
  @CURRENTAPPUSERID uniqueidentifier,
  @SITEFILTERMODE tinyint = 0,
  @SITESSELECTED xml = null,
  @SECURITYFEATUREID uniqueidentifier = null,
  @SECURITYFEATURETYPE tinyint = null
)
returns table
as
  return (
    with ISSYSADMIN (ISSYSADMIN) as (
      select ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID
    ), EXPORTDEFINITIONS (ID, NAME, DESCRIPTION, RECORDTYPEID, RECORDTYPE, SITE, ADDEDBY, DATEADDED, CHANGEDBY, DATECHANGED, USERCANEDIT) as (
      select
        EXPORTDEFINITION.ID as ID,
        EXPORTDEFINITION.NAME as NAME,
        EXPORTDEFINITION.DESCRIPTION as DESCRIPTION,
        RECORDTYPE.ID as RECORDTYPEID,
        RECORDTYPE.NAME as RECORDTYPE,
        isnull(SITE.NAME, 'All sites') as SITE,
        ADDEDBY.USERNAME as ADDEDBY,
        EXPORTDEFINITION.DATEADDED as DATEADDED,
        CHANGEDBY.USERNAME as CHANGEDBY,
        EXPORTDEFINITION.DATECHANGED as DATECHANGED,
        cast(1 as bit) as USERCANEDIT
      from dbo.EXPORTDEFINITION
      cross apply ISSYSADMIN
      inner join dbo.UFN_EXPORTDEFINITION_APPLYQUERYVIEWSECURITY(@CURRENTAPPUSERID) as GRANTEDEXPORTDEFINITIONS on GRANTEDEXPORTDEFINITIONS.ID = EXPORTDEFINITION.ID
      inner join dbo.CHANGEAGENT as ADDEDBY on EXPORTDEFINITION.ADDEDBYID = ADDEDBY.ID
      inner join dbo.CHANGEAGENT as CHANGEDBY on EXPORTDEFINITION.CHANGEDBYID = CHANGEDBY.ID
      inner join dbo.RECORDTYPE on EXPORTDEFINITION.RECORDTYPEID = RECORDTYPE.ID
      left outer join dbo.SITE on EXPORTDEFINITION.SITEID = SITE.ID
      where
        EXPORTDEFINITION.ISSYSTEM = 0
        and
        (
          EXPORTDEFINITION.SITEID is null
          or
          ISSYSADMIN.ISSYSADMIN = 1
          or
          exists (select top 1 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, @SECURITYFEATUREID, @SECURITYFEATURETYPE) where SITEID = EXPORTDEFINITION.SITEID)
        )
        and
        (
          @SITEFILTERMODE = 0
          or
          EXPORTDEFINITION.SITEID in (select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
        )
        -- hide marketing effort export record types

        and EXPORTDEFINITION.RECORDTYPEID not in (select ID from dbo.RECORDTYPE where NAME like '% Segment Member Export')
    ), COUNTS (ID, EXPORTS) as (
      select
        EXPORTPROCESS.EXPORTDEFINITIONID as ID,
        count(EXPORTPROCESS.ID) as EXPORTS
      from EXPORTDEFINITIONS
      cross apply ISSYSADMIN
      inner join dbo.EXPORTPROCESS on EXPORTDEFINITIONS.ID = EXPORTPROCESS.EXPORTDEFINITIONID
      left outer join dbo.BUSINESSPROCESSINSTANCE as BPI on EXPORTPROCESS.ID = BPI.BUSINESSPROCESSPARAMETERSETID
      where
        --Start Security Check

        (
          ISSYSADMIN.ISSYSADMIN = 1
          or
          (
            dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESSINSTANCE_IN_SYSTEMROLE(@CURRENTAPPUSERID, EXPORTPROCESS.ID) = 1
            and
            --Check site security

            (select count(*) from dbo.UFN_SITEID_MAPFROM_EXPORTPROCESSID(EXPORTPROCESS.ID) as EXPORTPROCESSSITE) > 0
          )
        )
        --End Security Check

        and
        --JamesWill WI242118 2012-11-13 Apply the user site filter in addition to doing security checks instead of as part of the security checks

        (
          @SITEFILTERMODE = 0
          or
          BPI.SITEID in (select SITEID from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED))
        )
      group by EXPORTPROCESS.EXPORTDEFINITIONID
    )
    select
      EXPORTDEFINITIONS.ID,
      EXPORTDEFINITIONS.NAME,
      EXPORTDEFINITIONS.DESCRIPTION,
      EXPORTDEFINITIONS.RECORDTYPEID,
      EXPORTDEFINITIONS.RECORDTYPE,
      EXPORTDEFINITIONS.SITE,
      EXPORTDEFINITIONS.ADDEDBY,
      EXPORTDEFINITIONS.DATEADDED,
      EXPORTDEFINITIONS.CHANGEDBY,
      EXPORTDEFINITIONS.DATECHANGED,
      EXPORTDEFINITIONS.USERCANEDIT,
      isnull(COUNTS.EXPORTS, 0) as EXPORTS
    from EXPORTDEFINITIONS
    left outer join COUNTS on COUNTS.ID = EXPORTDEFINITIONS.ID
);