USP_DATAFORMTEMPLATE_ADD_SUPPORTEVENT

The save procedure used by the add dataform template "Supporting Event Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(100) IN Name
@DESCRIPTION nvarchar(255) IN Description
@STARTDATE date IN Start date
@STARTTIME UDT_HOURMINUTE IN Start time
@ENDDATE date IN End date
@ENDTIME UDT_HOURMINUTE IN End time
@CAPACITY int IN Capacity
@EVENTLOCATIONID uniqueidentifier IN Location
@EVENTLOCATIONCONTACTID uniqueidentifier IN Contact
@MAINEVENTID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@COPYFROMEVENTID uniqueidentifier IN Copy from
@COPYTASKS bit IN Copy tasks
@COPYEXPENSES bit IN Copy expenses
@COPYPRICES bit IN Copy registration options
@COPYINVITATIONS bit IN Copy invitations
@COPYINVITEES bit IN Copy invitees
@COPYATTRIBUTES bit IN Copy attributes
@ATTRIBUTEDEFINED bit IN Event attributes defined
@SITES xml IN Sites
@COPYPREFERENCES bit IN Copy preferences
@EVENTCATEGORYCODEID uniqueidentifier IN Category
@COPYTEAMSTRUCTURE bit IN Copy team structure
@COPYTEAMFUNDRAISERS bit IN Copy team members
@APPEALID uniqueidentifier IN Appeal
@EVENTLOCATIONROOMID uniqueidentifier IN Room/Unit
@ISAUCTION bit IN Event is an auction
@COPYLODGINGOPTIONS bit IN Copy lodging options
@COPYJOBOCCURRENCES bit IN Copy job occurrences
@HIDEFROMCALENDAR bit IN Do not show event on calendar
@DESIGNATIONSONFEES bit IN Event allows designations on fees
@COPYDESIGNATIONS bit IN Copy designations
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@COPYPUBLICDESCRIPTION bit IN

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SUPPORTEVENT
                    (
                        @ID uniqueidentifier = null output,
                        @CHANGEAGENTID uniqueidentifier = null,    
                        @NAME nvarchar(100) = '',
                        @DESCRIPTION nvarchar(255) = '',    
                        @STARTDATE date,
                        @STARTTIME dbo.UDT_HOURMINUTE = null,
                        @ENDDATE date = null,
                        @ENDTIME dbo.UDT_HOURMINUTE = null,
                        @CAPACITY int = 0,
                        @EVENTLOCATIONID uniqueidentifier = null,
                        @EVENTLOCATIONCONTACTID uniqueidentifier = null,
                        @MAINEVENTID uniqueidentifier,
                        @COPYFROMEVENTID uniqueidentifier = null,
                        @COPYTASKS bit = 1,
                        @COPYEXPENSES bit = 1,
                        @COPYPRICES bit = 1,
                        @COPYINVITATIONS bit = 1,
                        @COPYINVITEES bit = 1,
                        @COPYATTRIBUTES bit = 1,
                        @ATTRIBUTEDEFINED bit = 0,
                        @SITES xml = null,
                        @COPYPREFERENCES bit = 1,
                        @EVENTCATEGORYCODEID uniqueidentifier = null,
                        @COPYTEAMSTRUCTURE bit = 0,
                        @COPYTEAMFUNDRAISERS bit = 0,
                        @APPEALID uniqueidentifier = null,
                        @EVENTLOCATIONROOMID uniqueidentifier = null,
                        @ISAUCTION bit = 0,
                        @COPYLODGINGOPTIONS bit = 1,
                        @COPYJOBOCCURRENCES bit = 1,
                        --,@COPYCAMPAIGNS bit = 1

                        @HIDEFROMCALENDAR bit = 0,
                        @DESIGNATIONSONFEES bit = 0,
                        @COPYDESIGNATIONS bit = 1,
                        @CURRENTAPPUSERID uniqueidentifier = null,

                        --Public description is currently only implemented on non-multilevel events (by Web Forms).  

                        --Still adding fields to make it less exceptional to copy helper class + providing easier route in future if that rule changes

                        @COPYPUBLICDESCRIPTION bit = 0
                    )
                    as                    
                        set nocount on;

                        declare @CURRENTDATE datetime;

                        if @ID is null
                            set @ID = newid();

                        if @CHANGEAGENTID is null  
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        set @CURRENTDATE = getdate();

                        if @ENDDATE is null
                            set @ENDDATE = @STARTDATE;

                        declare @PARENTEVENTID uniqueidentifier = @MAINEVENTID
                        -- If the parent is not the main event, set the main event id

                        select @MAINEVENTID = MAINEVENTID from dbo.EVENT where ID = @PARENTEVENTID and MAINEVENTID is not null

                        begin try
                            --CR297394-040708 TMV 04/08/2008 This may change to be a database constraint in a future release

                            if dbo.UFN_EVENT_CANSUPPORTEVENTS_NULLAPPEAL(@PARENTEVENTID) <> 1
                                raiserror('ERR_EVENT_CANSUPPORTEVENTS_NULLAPPEAL', 13, 1);

                            if exists(select 1 from dbo.EVENTAUCTION where EVENTAUCTION.ID = @PARENTEVENTID)
                                raiserror('ERR_EVENT_AUCTIONSCANNOTHAVECHILDEVENTS', 13, 1);

                            if @ISAUCTION = 1 and @APPEALID is not null and @APPEALID <> '00000000-0000-0000-0000-000000000000'
                                raiserror('ERR_EVENTAUCTION_TEAMFUNDRAISINGAPPEAL', 13, 1);

                            exec dbo.USP_EVENTSITE_VALIDATESITES @SITES;

                            -- In the Fire release, the context can be any event in the hierarchy, not just the main event as was previously the case.

                            -- @PARENTEVENTID is set from this context and @MAINEVENTID becomes the ID of the top level event in the event hierarchy.

                            declare @HIERARCHYINSERTPOSITION hierarchyid = null;
                            if exists(select (1) from dbo.EVENTHIERARCHY where EVENTHIERARCHY.ID = @PARENTEVENTID)
                            begin
                                declare @PARENTEVENTHIERARCHYPATH hierarchyid;
                                select
                                    @PARENTEVENTHIERARCHYPATH = HIERARCHYPATH
                                from
                                    dbo.EVENTHIERARCHY
                                where
                                    EVENTHIERARCHY.ID = @PARENTEVENTID;

                                set @HIERARCHYINSERTPOSITION = dbo.UFN_EVENT_GETHIERARCHYPATHINSERTPOSITION(@PARENTEVENTID);    
                            end

                            --The currency of this event should default to the user's default currency.

                            declare @BASECURRENCYID uniqueidentifier = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID);

                            insert into dbo.EVENT
                                (ID, NAME, DESCRIPTION, STARTDATE, STARTTIME, ENDDATE, ENDTIME, CAPACITY, EVENTLOCATIONID, EVENTLOCATIONROOMID, EVENTLOCATIONCONTACTID, MAINEVENTID, EVENTCATEGORYCODEID, APPEALID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, HIDEFROMCALENDAR, DESIGNATIONSONFEES, BASECURRENCYID)
                            values
                                (@ID, @NAME, @DESCRIPTION, @STARTDATE, @STARTTIME, @ENDDATE, @ENDTIME, @CAPACITY, @EVENTLOCATIONID, @EVENTLOCATIONROOMID, @EVENTLOCATIONCONTACTID, @MAINEVENTID, @EVENTCATEGORYCODEID, @APPEALID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @HIDEFROMCALENDAR, @DESIGNATIONSONFEES, @BASECURRENCYID);

                            exec dbo.USP_EVENT_GETSITES_ADDFROMXML @ID, @SITES, @CHANGEAGENTID, @CURRENTDATE

                            if @COPYFROMEVENTID is not null
                            begin
                                if @COPYTASKS = 1
                                    exec dbo.USP_EVENTTASK_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                if @COPYEXPENSES = 1
                                    exec dbo.USP_EVENTEXPENSE_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                if @COPYPRICES = 1
                                    exec dbo.USP_EVENTPRICE_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                if @COPYTEAMSTRUCTURE = 1
                                    exec dbo.USP_EVENT_TEAMFUNDRAISINGCOPY @COPYFROMEVENTID, null, @ID, @CHANGEAGENTID, @COPYTEAMFUNDRAISERS, @CURRENTAPPUSERID = @CURRENTAPPUSERID, @FEATUREID = '656DE3FC-B4C5-4A96-83E3-5D35B354F0C7';

                                if @COPYINVITATIONS = 1
                                    exec dbo.USP_INVITATION_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID, @COPYINVITEES;

                                if @COPYATTRIBUTES = 1
                                    exec dbo.USP_EVENTATTRIBUTE_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                if @COPYPREFERENCES = 1
                                    exec dbo.USP_EVENTPREFERENCE_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                if @COPYLODGINGOPTIONS = 1
                                    exec dbo.USP_EVENTLODGINGOPTIONS_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                if @COPYJOBOCCURRENCES = 1
                                    exec dbo.USP_EVENTJOBOCCURRENCES_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                                --if @COPYCAMPAIGNS = 1

                                    --exec dbo.USP_EVENTCAMPAIGNS_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;


                                if @COPYDESIGNATIONS = 1
                                    exec dbo.USP_EVENTDESIGNATIONS_COPY @COPYFROMEVENTID, @ID, @CHANGEAGENTID;

                            end

                            if @ISAUCTION = 1
                                insert into dbo.EVENTAUCTION(ID, DATEADDED, DATECHANGED, ADDEDBYID, CHANGEDBYID) values(@ID, @CURRENTDATE, @CURRENTDATE, @CHANGEAGENTID, @CHANGEAGENTID)

                            if @HIERARCHYINSERTPOSITION is not null
                            begin
                                insert into dbo.EVENTHIERARCHY
                                    (ID, HIERARCHYPATH, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                values
                                    (@ID, @HIERARCHYINSERTPOSITION, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);

                                declare @PARENTEVENTMANAGEMENTINSTANCEID uniqueidentifier;
                                select
                                    @PARENTEVENTMANAGEMENTINSTANCEID = EVENTMANAGEMENTLEVELINSTANCE.EVENTMANAGEMENTINSTANCEID
                                from
                                    dbo.EVENT
                                inner join
                                    dbo.EVENTHIERARCHY on EVENTHIERARCHY.ID = EVENT.ID
                                inner join
                                    dbo.EVENTMANAGEMENTOPTIONS on EVENTMANAGEMENTOPTIONS.EVENTID = EVENT.ID
                                inner join
                                    dbo.EVENTMANAGEMENTLEVELINSTANCE on EVENTMANAGEMENTLEVELINSTANCE.ID = EVENTMANAGEMENTOPTIONS.EVENTMANAGEMENTLEVELINSTANCEID
                                where
                                    EVENTHIERARCHY.HIERARCHYPATH = @HIERARCHYINSERTPOSITION.GetAncestor(1);

                                declare @EVENTMANAGEMENTOPTIONSCONFLICT bit = 0;
                                select @EVENTMANAGEMENTOPTIONSCONFLICT = 1
                                from dbo.EVENTMANAGEMENTOPTIONS
                                    inner join dbo.EVENTMANAGEMENTLEVELINSTANCE on EVENTMANAGEMENTLEVELINSTANCE.ID = EVENTMANAGEMENTOPTIONS.EVENTMANAGEMENTLEVELINSTANCEID
                                where
                                    EVENTMANAGEMENTOPTIONS.EVENTID = @PARENTEVENTID
                                    and @COPYFROMEVENTID is not null
                                    and dbo.UFN_EVENT_CONFLICTSWITHMANAGEMENTLEVELINSTANCE(
                                        @ID,
                                        EVENTMANAGEMENTLEVELINSTANCE.EVENTMANAGEMENTINSTANCEID,
                                        @COPYTASKS
                                        case when @COPYPRICES = 1 or @COPYPREFERENCES = 1 then 1 end,
                                        0,
                                        @COPYEXPENSES,
                                        case when @COPYINVITATIONS = 1 or @COPYINVITEES = 1 then 1 end,
                                        0,
                                        0,
                                        @COPYJOBOCCURRENCES,
                                        @COPYLODGINGOPTIONS
                                        --,@COPYCAMPAIGNS

                                    ) = 1

                                insert into dbo.EVENTMANAGEMENTOPTIONS
                                (
                                    ID,
                                    EVENTMANAGEMENTLEVELINSTANCEID,
                                    EVENTID,
                                    HASREGISTRANTSANDOPTIONS,
                                    HASSPEAKERS,
                                    HASEXPENSES,
                                    HASINVITATIONS,
                                    HASTASKSANDCOORDINATORS,
                                    HASLODGINGOPTIONS,
                                    HASJOBOCCURRENCES,
                                    HASAPPEALS,
                                    HASDOCUMENTATION,
                                    HASCAMPAIGNS,
                                    ADDEDBYID,
                                    CHANGEDBYID,
                                    DATEADDED,
                                    DATECHANGED
                                )
                                select
                                    newid(),
                                    EVENTMANAGEMENTLEVELINSTANCE.ID,
                                    @ID,
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASREGISTRANTSANDOPTIONS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASREGISTRANTSANDOPTIONS end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASSPEAKERS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASSPEAKERS end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASEXPENSES, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASEXPENSES end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASINVITATIONS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASINVITATIONS end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASTASKSANDCOORDINATORS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASTASKSANDCOORDINATORS end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASLODGINGOPTIONS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASLODGINGOPTIONS end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASJOBOCCURRENCES, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASJOBOCCURRENCES end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASAPPEALS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASAPPEALS end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASDOCUMENTATION, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASDOCUMENTATION end,
                                        1),
                                    coalesce(
                                        EVENTMANAGEMENTOPTIONS.HASCAMPAIGNS, 
                                        case when @EVENTMANAGEMENTOPTIONSCONFLICT = 0 then EVENTMANAGEMENTLEVELINSTANCE.HASCAMPAIGNS end,
                                        1),                                        
                                    @CHANGEAGENTID,
                                    @CHANGEAGENTID,
                                    @CURRENTDATE,
                                    @CURRENTDATE
                                from
                                    dbo.EVENTHIERARCHY
                                left outer join 
                                    dbo.EVENTMANAGEMENTLEVELINSTANCE on EVENTMANAGEMENTLEVELINSTANCE.EVENTMANAGEMENTINSTANCEID = @PARENTEVENTMANAGEMENTINSTANCEID and
                                        EVENTMANAGEMENTLEVELINSTANCE.LEVEL = EVENTHIERARCHY.HIERARCHYPATH.GetLevel()
                                left outer join
                                    dbo.EVENTMANAGEMENTOPTIONS on EVENTMANAGEMENTOPTIONS.EVENTID = @COPYFROMEVENTID
                                where
                                    EVENTHIERARCHY.ID = @ID;
                            end    

                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR;
                            return 1;
                        end catch

                        return 0;