USP_EVENT_COPYEVENT

Copies an event to a new instance.

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@NEWSTARTDATE datetime IN
@NEWENDDATE datetime IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_EVENT_COPYEVENT
                (
                    @EVENTID uniqueidentifier,
                    @NEWSTARTDATE datetime,
                    @NEWENDDATE datetime,
                    @CHANGEAGENTID uniqueidentifier
                )
            as
            begin
                declare @ID uniqueidentifier;
                set @ID = newid()

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

                declare @CURRENTDATE datetime
                set @CURRENTDATE = getdate()

                begin try
                    -- handle inserting the data


                    declare @EVENTHOLDLISTID uniqueidentifier
                      set @EVENTHOLDLISTID = null

                    declare @EVENTSALESTYPEID uniqueidentifier
                      set @EVENTSALESTYPEID = null

                    insert into dbo.EVENT
                        (
                          ID, 
                          PROGRAMID, 
                          NAME, 
                          DESCRIPTION,
                          CAPACITY,
                          STARTDATE,
                          STARTTIME,
                          ENDDATE,
                          ENDTIME,
                          PUBLICDESCRIPTIONTEXT,
                          PUBLICDESCRIPTIONHTML,
                          SUPERCEDESPROGRAMPUBLICDESCRIPTION,
                          ADDEDBYID, 
                          CHANGEDBYID, 
                          DATEADDED, 
                          DATECHANGED
                        )
                    select
                        @ID,
                        PROGRAMID,
                        NAME,
                        DESCRIPTION,
                        CAPACITY,
                        @NEWSTARTDATE,
                        STARTTIME,
                        @NEWENDDATE,
                        ENDTIME,
                        PUBLICDESCRIPTIONTEXT,
                        PUBLICDESCRIPTIONHTML,
                        SUPERCEDESPROGRAMPUBLICDESCRIPTION,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    from dbo.EVENT
                    where EVENT.ID = @EVENTID;

                    --now copy the locations for that event into the new event

                    begin 
                        insert into dbo.PROGRAMEVENTLOCATION
                        (
                            ID,
                            EVENTID,
                            EVENTCONFLICTID,
                            EVENTLOCATIONID,
                            ADDEDBYID, 
                            CHANGEDBYID, 
                            DATEADDED, 
                            DATECHANGED
                        )
                        select 
                            newid(),
                            @ID,
                            null,
                            EVENTLOCATIONID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        from dbo.PROGRAMEVENTLOCATION
                        where PROGRAMEVENTLOCATION.EVENTID=@EVENTID;
                    end

                    if exists(select 1 from dbo.EVENTSALESMETHOD where EVENTID = @EVENTID)
                      begin
                      set @EVENTSALESTYPEID = newid()

                      insert into EVENTSALESMETHOD
                      (
                        ID,
                        EVENTID,
                        SALESMETHODID,
                        ONSALEDATE,
                        ONSALETIME,
                        ADDEDBYID, 
                        CHANGEDBYID, 
                        DATEADDED, 
                        DATECHANGED
                      )
                        select
                          newid(),
                          @ID,
                          SALESMETHODID,
                          ONSALEDATE,
                          ONSALETIME,
                          @CHANGEAGENTID
                          @CHANGEAGENTID
                          @CURRENTDATE
                          @CURRENTDATE
                        from dbo.EVENTSALESMETHOD
                        where EVENTID = @EVENTID

                    end

                    if exists (select 1 from dbo.EVENTHOLDLIST where EVENTID = @EVENTID)
                      begin

                      set @EVENTHOLDLISTID = newid()

                      insert into dbo.EVENTHOLDLIST
                      (
                        ID, 
                        NAME, 
                        EVENTID,
                        ADDEDBYID, 
                        CHANGEDBYID, 
                        DATEADDED, 
                        DATECHANGED
                      )
                        select 
                          @EVENTHOLDLISTID
                          NAME,
                          @ID,
                          @CHANGEAGENTID
                          @CHANGEAGENTID
                          @CURRENTDATE
                          @CURRENTDATE 
                        from dbo.EVENTHOLDLIST 
                        where EVENTID=@EVENTID

                      insert into dbo.EVENTHOLD
                      (
                        ID,
                        HOLDCODEID,
                        QUANTITY,
                        EVENTHOLDLISTID,
                        ADDEDBYID, 
                        CHANGEDBYID, 
                        DATEADDED, 
                        DATECHANGED
                      )
                      (
                        select
                          newid(),
                          HOLDCODEID,
                          QUANTITY,
                          @EVENTHOLDLISTID,
                          @CHANGEAGENTID
                          @CHANGEAGENTID
                          @CURRENTDATE
                          @CURRENTDATE 
                        from dbo.EVENTHOLD
                        inner join dbo.EVENTHOLDLIST on EVENTHOLD.EVENTHOLDLISTID = EVENTHOLDLIST.ID
                        where EVENTHOLDLIST.EVENTID = @EVENTID
                      )
                      end

                    if exists (select 1 from dbo.PROGRAMEVENTPRICE where EVENTID = @EVENTID)
                      begin

                      insert into dbo.PROGRAMEVENTPRICE
                      (
                        ID,
                        PRICETYPECODEID,
                        FACEPRICE,
                        EVENTID,
                        ADDEDBYID, 
                        CHANGEDBYID, 
                        DATEADDED, 
                        DATECHANGED
                      )
                        select
                          newid(),
                          PRICETYPECODEID,
                          FACEPRICE,
                          @ID,
                          @CHANGEAGENTID
                          @CHANGEAGENTID
                          @CURRENTDATE
                          @CURRENTDATE 
                        from dbo.PROGRAMEVENTPRICE
                        where PROGRAMEVENTPRICE.EVENTID = @EVENTID
                      end

                      insert into dbo.EVENTRESOURCE
                      (
                        ID,
                        EVENTID,
                        RESOURCEID,
                        QUANTITYNEEDED,
                        ADDEDBYID, 
                        CHANGEDBYID, 
                        DATEADDED, 
                        DATECHANGED
                      )
                        select
                          newid(),
                          @ID,
                          RESOURCEID,
                          QUANTITYNEEDED,
                          @CHANGEAGENTID
                          @CHANGEAGENTID
                          @CURRENTDATE
                          @CURRENTDATE 
                        from dbo.EVENTRESOURCE
                        where EVENTRESOURCE.EVENTID = @EVENTID

                    -- Update all resources added to the new event to reflect their consumption

                    update dbo.[RESOURCE] set
                        [QUANTITY] = dbo.[RESOURCE].[QUANTITY] - dbo.[EVENTRESOURCE].QUANTITYNEEDED,
                        CHANGEDBYID = @CHANGEAGENTID,
                        DATECHANGED = @CURRENTDATE
                    from dbo.[RESOURCE]
                        inner join dbo.[EVENTRESOURCE] on dbo.[RESOURCE].ID = dbo.[EVENTRESOURCE].RESOURCEID
                    where dbo.[EVENTRESOURCE].EVENTID = @ID
                        and dbo.[RESOURCE].ISPERTICKETITEM = 0
                        and dbo.[RESOURCE].TYPECODE = 1
                end try

                begin catch
                    exec dbo.USP_RAISE_ERROR
                    return 1
                end catch
            end