USP_DATAFORMTEMPLATE_EDITLOAD_TEAMFUNDRAISINGEVENTPERFORMANCEQUICKCOMPARISON

The load procedure used by the edit dataform template "Team Fundraising Event Performance Quick Comparison Edit"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@NAME nvarchar(100) INOUT Event
@QUICKCOMPEVENTS xml INOUT Quick comparison events
@TSLONG bigint INOUT Output parameter indicating the TSLONG value of the record being edited. This is used to manage multi-user concurrency issues when multiple users access the same record.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_TEAMFUNDRAISINGEVENTPERFORMANCEQUICKCOMPARISON
                    (
                            @ID uniqueidentifier,
                            @DATALOADED bit = 0 output,                        
                            @NAME nvarchar(100) = null output,
                            @QUICKCOMPEVENTS xml = null output,
                            @TSLONG bigint = 0 output,
                            @CURRENTAPPUSERID uniqueidentifier
                    )
                        as
                        begin

                            set nocount on

                            set @DATALOADED = 0;
                            set @TSLONG = 0;

                            select 
                                @DATALOADED = 1,
                                @NAME = NAME,
                                @TSLONG = TSLONG
                            from  
                                dbo.EVENT
                            where 
                                ID = @ID                    

                            create table #QUICKCOMPAREEVENT
                            (
                                ID uniqueidentifier,
                                NAME nvarchar(100) collate DATABASE_DEFAULT,
                                QUICKCOMPAREEVENTID uniqueidentifier
                            );

                            insert into #QUICKCOMPAREEVENT (ID, NAME, QUICKCOMPAREEVENTID)
                            select
                                EVENT.ID,
                                EVENT.NAME,
                                EVENT.QUICKCOMPAREEVENTID
                            from
                                dbo.EVENT
                            where
                                EVENT.ID = @ID
                                    and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1);

                            declare @MOREEVENTSTOCOMPARE bit;
                            set @MOREEVENTSTOCOMPARE = 1;
                            declare @ADDEDEVENTCOUNT int;
                            while @MOREEVENTSTOCOMPARE = 1
                            begin

                                insert into #QUICKCOMPAREEVENT (ID, NAME, QUICKCOMPAREEVENTID)
                                select distinct
                                    EVENT.ID,
                                    EVENT.NAME,
                                    EVENT.QUICKCOMPAREEVENTID
                                from
                                    #QUICKCOMPAREEVENT [QUICKCOMPAREEVENT]
                                    inner join dbo.EVENT on
                                        [QUICKCOMPAREEVENT].QUICKCOMPAREEVENTID = EVENT.ID
                                        or
                                        [QUICKCOMPAREEVENT].ID = EVENT.QUICKCOMPAREEVENTID
                                    left join #QUICKCOMPAREEVENT [SELECTEDEVENT] on EVENT.ID = [SELECTEDEVENT].ID
                                where
                                    [SELECTEDEVENT].ID is null
                                        and (@CURRENTAPPUSERID is null or dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1)
                                        and EVENT.APPEALID is not null

                                set @ADDEDEVENTCOUNT = @@ROWCOUNT;

                                if @ADDEDEVENTCOUNT > 0 and (select count(ID) from #QUICKCOMPAREEVENT) < 100
                                    set @MOREEVENTSTOCOMPARE = 1;
                                else
                                    set @MOREEVENTSTOCOMPARE = 0;

                            end

                            select @QUICKCOMPEVENTS = (
                                select 
                                    ID as QUICKCOMPEVENTID, 
                                    NAME as QUICKCOMPEVENTNAME, 
                                    0 as SELECTED
                                from #QUICKCOMPAREEVENT 
                                where ID <> @ID
                                order by NAME
                                for xml path('ITEM'),type,elements,root('QUICKCOMPEVENTS'),BINARY BASE64
                            );

                            drop table #QUICKCOMPAREEVENT;                        

                            return 0
                        end