USP_DATAFORMTEMPLATE_ADD_TIMETABLEDAYPERIODS

The save procedure used by the add dataform template "Timetable Day Add Data 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.
@TIMETABLEID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CYCLEDAYID uniqueidentifier IN Cycle day
@PERIODS xml IN

Definition

Copy


                        CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_TIMETABLEDAYPERIODS
                        (
                                @ID uniqueidentifier = null output,
                                @CHANGEAGENTID uniqueidentifier = null,
                                @TIMETABLEID uniqueidentifier, 
                                @CYCLEDAYID uniqueidentifier, 
                                @PERIODS xml = null
                        )
                        as

                        set nocount on;

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

                        begin try

                            if @CYCLEDAYID = '00000000-0000-0000-0000-000000000001' --all cycle days

                                begin
                                    declare @TempTbl table (
                                       [ROWID] int identity(1,1),
                                       [TIMETABLEDAYID] uniqueidentifier)

                                    insert into @TempTbl (TIMETABLEDAYID) 
                                    select [ID] 
                                    from 
                                        dbo.[TIMETABLEDAY] 
                                    where
                                        TIMETABLEID = @TIMETABLEID

                                    declare @rowId int
                                    declare @maxRowId int   
                                    declare @TIMETABLEDAYID uniqueidentifier = null     

                                    select
                                       @rowId = min(ROWID),
                                       @MaxRowId = max(ROWID)
                                    from @TempTbl

                                    while @RowId <= @MaxRowId
                                    begin
                                        select
                                           @TIMETABLEDAYID = TIMETABLEDAYID
                                        from
                                           @TempTbl
                                        where 
                                           ROWID = @RowId

                                        exec dbo.USP_TIMETABLEDAY_GETTIMETABLEDAYPERIODS_ADDFROMXML @TIMETABLEDAYID, @PERIODS, @CHANGEAGENTID

                                        if not exists(select ID from dbo.TIMETABLEDAYPERIOD where TIMETABLEDAYID = @TIMETABLEDAYID)
                                            raiserror('BBERR_TIMETABLEDAY_ATLEASTONEPERIOD', 13, 1)

                                        set @RowId = @RowId + 1
                                    end

                                end
                            else   

                                begin
                                    if @ID is null 
                                            select 
                                                @ID = TIMETABLEDAY.ID
                                            from
                                                TIMETABLEDAY
                                            where
                                                CYCLEDAYID = @CYCLEDAYID AND TIMETABLEID = @TIMETABLEID

                                    -- link timetable periods

                                    exec dbo.USP_TIMETABLEDAY_GETTIMETABLEDAYPERIODS_ADDFROMXML @ID, @PERIODS, @CHANGEAGENTID

                                    if not exists(select ID from dbo.TIMETABLEDAYPERIOD where TIMETABLEDAYID = @ID)
                                        raiserror('BBERR_TIMETABLEDAY_ATLEASTONEPERIOD', 13, 1)
                                end

                        end try

                        begin catch
                                exec dbo.USP_RAISE_ERROR
                                return 1
                        end catch

                        return 0