UFN_SMARTQUERY_EVENTREGISTRANTATTENDANCE

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@SPECIFICEVENT bit IN
@EVENTID uniqueidentifier IN
@DATETYPE int IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@ONLYATTENDED bit IN
@CURRENTAPPUSERID uniqueidentifier IN
@MAXROWS int IN

Definition

Copy


create function dbo.UFN_SMARTQUERY_EVENTREGISTRANTATTENDANCE
(
    @SPECIFICEVENT bit = 1,
    @EVENTID uniqueidentifier = null,
    @DATETYPE int = 1,
    @STARTDATE datetime = null,
    @ENDDATE datetime = null,
    @ONLYATTENDED bit = 0,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @MAXROWS int = 500
)
returns @RETURNTABLE table
(
    ID uniqueidentifier not null,
    NAME nvarchar(150),
    EVENTNAME nvarchar(150),
    ATTENDED bit
)
as
begin

    declare @ISADMIN bit;
    declare @APPUSER_IN_NONRACROLE bit;
    declare @APPUSER_IN_NOSECGROUPROLE bit;

    set @ISADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
    set @APPUSER_IN_NONRACROLE = dbo.UFN_SECURITY_APPUSER_IN_NONRACROLE(@CURRENTAPPUSERID);
    set @APPUSER_IN_NOSECGROUPROLE = dbo.UFN_SECURITY_APPUSER_IN_NO_SECURITY_GROUP_ROLE(@CURRENTAPPUSERID);

    if @SPECIFICEVENT = 1
    begin
        insert into @RETURNTABLE
        (
            ID,
            NAME,
            EVENTNAME,
            ATTENDED
        )
        (
            select
                CONSTITUENT.ID,
                NF.NAME,
                EVENT.NAME,
                REGISTRANT.ATTENDED
            from
                dbo.CONSTITUENT
            inner join
                dbo.REGISTRANT on REGISTRANT.CONSTITUENTID = CONSTITUENT.ID
            inner join
                dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
            where
                ( (@ISADMIN = 1) or (@APPUSER_IN_NONRACROLE = 1) or (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1) )
                and ( (REGISTRANT.EVENTID = @EVENTID) or (@EVENTID is null) )
                and ( (REGISTRANT.ATTENDED = @ONLYATTENDED) or (@ONLYATTENDED = 0) )
        );
    end
    else
    begin
        declare @CURRENTDATE datetime;
        set @CURRENTDATE = GETDATE();

        if @DATETYPE = 0 begin
            -- This year

            set @STARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@CURRENTDATE, 0);
            set @ENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@CURRENTDATE, 1);
        end else if @DATETYPE = 1 begin
            -- Last year

            set @STARTDATE = dbo.UFN_DATE_LASTCALENDARYEAR_FIRSTDAY(@CURRENTDATE, 0);
            set @ENDDATE = dbo.UFN_DATE_LASTCALENDARYEAR_LASTDAY(@CURRENTDATE, 1);
        end else if @DATETYPE = 2 begin
            -- Any year

            set @STARTDATE = '1753-01-02';
            set @ENDDATE = '9999-12-30';
        end

        insert into @RETURNTABLE
        (
            ID,
            NAME,
            EVENTNAME,
            ATTENDED
        )
        (
            select
                CONSTITUENT.ID,
                NF.NAME,
                EVENT.NAME,
                REGISTRANT.ATTENDED
            from
                dbo.CONSTITUENT
            inner join
                dbo.REGISTRANT on REGISTRANT.CONSTITUENTID = CONSTITUENT.ID
            inner join
                dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
            outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
            where
                ( (@ISADMIN = 1) or (@APPUSER_IN_NONRACROLE = 1) or (dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITID_FORREPORT(@CURRENTAPPUSERID, CONSTITUENT.ID, @APPUSER_IN_NOSECGROUPROLE) = 1) )
                and ( (EVENT.STARTDATE <= @ENDDATE) and (EVENT.ENDDATE >= @STARTDATE) )
                and ( (REGISTRANT.ATTENDED = @ONLYATTENDED) or (@ONLYATTENDED = 0) )
        );
    end

    return;
end