USP_DATAFORMTEMPLATE_EDIT_REGISTRATIONPACKAGE

The save procedure used by the edit dataform template "Registration Package Edit 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
@PRICES xml IN
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.

Definition

Copy

                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REGISTRATIONPACKAGE
                    (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @NAME nvarchar(100),
                        @PRICES xml,
                        @CURRENTAPPUSERID uniqueidentifier = null
                    )
                    as                    
                        set nocount on;

                        declare @CURRENTDATE datetime;

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

                        set @CURRENTDATE = getdate();                        

                        begin try
                            declare @ALLPRICES table(
                                ID uniqueidentifier, 
                                EVENTPRICEID uniqueidentifier, 
                                SEQUENCE int
                            )

                            insert into @ALLPRICES
                                select 
                                    PRICES.ID,
                                    PRICES.EVENTPRICEID,
                                    PRICES.SEQUENCE
                                from
                                    dbo.UFN_REGISTRATIONPACKAGEPRICE_GETPRICES_FROMITEMLISTXML(@PRICES) as PRICES
                                    inner join dbo.EVENTPRICE on EVENTPRICE.ID = PRICES.EVENTPRICEID
                                where
                                    dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENTPRICE.EVENTID) = 1

                            declare @NEXTSEQUENCE int = (select max(SEQUENCE) from @ALLPRICES) + 1

                            insert into @ALLPRICES
                                select 
                                    REGISTRATIONPACKAGEPRICE.ID,
                                    REGISTRATIONPACKAGEPRICE.EVENTPRICEID,
                                    REGISTRATIONPACKAGEPRICE.SEQUENCE
                                from
                                    dbo.REGISTRATIONPACKAGEPRICE
                                    inner join dbo.EVENTPRICE on EVENTPRICE.ID = REGISTRATIONPACKAGEPRICE.EVENTPRICEID
                                where 
                                    REGISTRATIONPACKAGEPRICE.REGISTRATIONPACKAGEID = @ID    
                                    and dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENTPRICE.EVENTID) = 0

                            set @PRICES = (
                                select ID, EVENTPRICEID, SEQUENCE
                                from @ALLPRICES
                                 for xml raw('ITEM'),type,elements,root('PRICES'),BINARY BASE64);

                            exec dbo.USP_REGISTRATIONPACKAGEPRICE_VALIDATEPRICES @PRICES;        

                            update 
                                dbo.REGISTRATIONPACKAGE
                            set
                                NAME = @NAME,
                                CHANGEDBYID = @CHANGEAGENTID
                                DATECHANGED = @CURRENTDATE
                            where
                                ID = @ID;

                            exec dbo.USP_REGISTRATIONPACKAGEPRICE_GETPRICES_UPDATEFROMXML @ID, @PRICES, @CHANGEAGENTID;
                        end try

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

                        return 0;