USP_DATAFORMTEMPLATE_EDITSAVE_EVENT

The save procedure used by the edit dataform template "Program Event Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@NAME nvarchar(100) IN Name
@LOCATIONS xml IN
@DESCRIPTION nvarchar(255) IN Description
@CAPACITY int IN Capacity
@EVENTSTARTDATE datetime IN Date
@STARTTIME UDT_HOURMINUTE IN Start time
@ENDTIME UDT_HOURMINUTE IN End time
@ONSALEINFO xml IN On-sale information
@IGNORECONFLICTS bit IN Ignore conflicts when saving
@EVENTRESOURCES xml IN Supplies/Equipment resources
@EVENTSTAFFRESOURCES xml IN Staffing resources

Definition

Copy

                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITSAVE_EVENT (
                    @ID uniqueidentifier,
                    @CHANGEAGENTID uniqueidentifier = null,
                    @NAME nvarchar(100),
                    @LOCATIONS xml,
                    @DESCRIPTION nvarchar(255),
                    @CAPACITY int,
                    @EVENTSTARTDATE datetime,
                    @STARTTIME dbo.UDT_HOURMINUTE,
                    @ENDTIME dbo.UDT_HOURMINUTE,
                    @ONSALEINFO xml,
                    @IGNORECONFLICTS bit,
                    @EVENTRESOURCES xml,
                    @EVENTSTAFFRESOURCES xml
                )
                as

                set nocount on;

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

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

                declare @STARTDATETIME datetime;
                declare @ENDDATETIME datetime;
                declare @EVENTENDDATE datetime;
                set @EVENTENDDATE=@EVENTSTARTDATE;
                if @STARTTIME > @ENDTIME 
                    begin
                        set @EVENTENDDATE=DATEADD(d,1,@EVENTENDDATE)
                    end

                set @STARTDATETIME = dbo.UFN_DATE_ADDHOURMINUTE(@EVENTSTARTDATE, @STARTTIME)
                set @ENDDATETIME = dbo.UFN_DATE_ADDHOURMINUTE(@EVENTENDDATE, @ENDTIME)

                if @IGNORECONFLICTS = 0
                begin
                    if dbo.UFN_CONFLICTCHECK_CONFLICTSEXIST
                    (
                        @STARTDATETIME, @ENDDATETIME,
                        @LOCATIONS, @EVENTRESOURCES, @EVENTSTAFFRESOURCES,
                        null, @ID, null,
                        0,
                        1,
                        0,
                        0
                    ) = 1
                    begin                    
                        raiserror('BBERR_CONFLICTSEXIST', 13, 1);
                        return 1;
                    end
                end

                begin try
                    update dbo.EVENT set
                        NAME = @NAME,
                        DESCRIPTION = @DESCRIPTION,
                        CAPACITY = @CAPACITY,
                        STARTDATE = @EVENTSTARTDATE,
                        STARTTIME = @STARTTIME,
                        ENDDATE = @EVENTENDDATE,
                        ENDTIME = @ENDTIME,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    where ID = @ID;

                    if (@LOCATIONS is null)
                    begin
                      raiserror('Please enter at least one location.', 13, 1);
                        return 1;
                    end
                    else
                    begin
                        -- Default 0 for SEQUENCE since it is a new field and may not be passed in
                        set @LOCATIONS = (
                            select
                                T.c.value('(CAPACITY)[1]','int') as 'CAPACITY',
                                T.c.value('(EVENTLOCATIONID)[1]','uniqueidentifier') as 'EVENTLOCATIONID',
                                T.c.value('(ID)[1]','uniqueidentifier') as 'ID',
                                isnull(T.c.value('(SEQUENCE)[1]','int'), 0) as 'SEQUENCE'
                            from
                                @LOCATIONS.nodes('/LOCATIONS/ITEM') T(c)
                            for xml raw('ITEM'),type,elements,root('LOCATIONS'),binary base64
                        );

                        exec dbo.USP_EVENT_GETSEQUENCEDLOCATIONS_UPDATEFROMXML @ID, @LOCATIONS, @CHANGEAGENTID, @CURRENTDATE;
                    end

                    exec dbo.USP_EVENT_GETONSALEINFO_UPDATEFROMXML @ID, @ONSALEINFO, @CHANGEAGENTID, @CURRENTDATE;
                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR
                    return 1
                end catch

                return 0;