USP_DATAFORMTEMPLATE_EDIT_TIMETABLE

The save procedure used by the edit dataform template "Timetable 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
@DESCRIPTION nvarchar(255) IN Description
@CYCLEID uniqueidentifier IN Cycle
@SCHEDULETIMECODE tinyint IN Schedule class meetings

Definition

Copy


                        CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_TIMETABLE (
                            @ID uniqueidentifier,
                            @CHANGEAGENTID uniqueidentifier = null,
                            @NAME nvarchar(100),
                            @DESCRIPTION nvarchar(255),
                            @CYCLEID uniqueidentifier,
                            @SCHEDULETIMECODE tinyint 
                        )
                        as

                            set nocount on;

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

                            declare @CURRENTDATE datetime
                            set @CURRENTDATE = getdate()

                            begin try
                                -- handle updating the data


                                declare @contextCache varbinary(128);

                                /* cache current context information */
                                set @contextCache = CONTEXT_INFO();

                                /* set CONTEXT_INFO to @CHANGEAGENTID */
                                if not @CHANGEAGENTID is null
                                    set CONTEXT_INFO @CHANGEAGENTID

                                -- cycle changed...attempt to remove days

                                delete dbo.TIMETABLEDAY
                                where TIMETABLEDAY.TIMETABLEID = @ID
                                    and TIMETABLEDAY.CYCLEDAYID not in (select CYCLEDAY.ID 
                                                                        from CYCLEDAY 
                                                                        where CYCLEID = @CYCLEID)

                                /* reset CONTEXT_INFO to previous value */
                                if not @contextCache is null
                                    set CONTEXT_INFO @contextCache

                                update dbo.TIMETABLE set
                                    TIMETABLE.NAME = @NAME,
                                    TIMETABLE.DESCRIPTION = @DESCRIPTION,
                                    TIMETABLE.CYCLEID = @CYCLEID,
                                    TIMETABLE.SCHEDULETIMECODE = @SCHEDULETIMECODE,
                                    TIMETABLE.CHANGEDBYID = @CHANGEAGENTID,
                                    TIMETABLE.DATECHANGED = @CURRENTDATE
                                where TIMETABLE.ID = @ID

                                insert into dbo.TIMETABLEDAY
                                    (ID, TIMETABLEID, CYCLEDAYID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                                select 
                                    newid(), 
                                    @ID
                                    CYCLEDAY.ID, 
                                    @CHANGEAGENTID
                                    @CHANGEAGENTID
                                    @CURRENTDATE
                                    @CURRENTDATE
                                from
                                    CYCLEDAY
                                where
                                    CYCLEID = @CYCLEID and not exists (select TIMETABLEDAY.ID 
                                                                       from TIMETABLEDAY 
                                                                       where TIMETABLEDAY.TIMETABLEID = @ID
                                                                         and TIMETABLEDAY.CYCLEDAYID = CYCLEDAY.ID)
                            end try

                            begin catch
                                exec dbo.USP_RAISE_ERROR
                                return 1
                            end catch

                        return 0;