USP_DATAFORMTEMPLATE_ADD_SESSION

The save procedure used by the add dataform template "Session Add Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@ACADEMICYEARID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@SESSIONNAMECODEID uniqueidentifier IN Name
@MARKINGCOLUMNSETID uniqueidentifier IN Marking columns
@TIMETABLEID uniqueidentifier IN Timetable
@SUNDAY bit IN Sunday
@MONDAY bit IN Monday
@TUESDAY bit IN Tuesday
@WEDNESDAY bit IN Wednesday
@THURSDAY bit IN Thursday
@FRIDAY bit IN Friday
@SATURDAY bit IN Saturday
@SESSIONTERMS xml IN Terms

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_SESSION
                    (
                        @ID uniqueidentifier = null output,
                        @ACADEMICYEARID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @SESSIONNAMECODEID uniqueidentifier = null,
                        @MARKINGCOLUMNSETID uniqueidentifier = null,
                        @TIMETABLEID uniqueidentifier = null,
                        @SUNDAY bit = null,
                        @MONDAY bit = null,
                        @TUESDAY bit = null,
                        @WEDNESDAY bit = null,
                        @THURSDAY bit = null,
                        @FRIDAY bit = null,
                        @SATURDAY bit = null,
                        @SESSIONTERMS xml = null
                    )
                    as

                    set nocount on;

                    if @ID is null
                        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

                        insert into dbo.SESSION
                            (ID, SESSIONNAMECODEID, MARKINGCOLUMNSETID, TIMETABLEID, SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, ACADEMICYEARID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                            values
                            (@ID, @SESSIONNAMECODEID, @MARKINGCOLUMNSETID, @TIMETABLEID, @SUNDAY, @MONDAY, @TUESDAY, @WEDNESDAY, @THURSDAY, @FRIDAY, @SATURDAY, @ACADEMICYEARID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE)

                        exec dbo.USP_SESSION_GETTERMS_ADDFROMXML @ID, @SESSIONTERMS, @CHANGEAGENTID, @CURRENTDATE;

                        if exists(select TERM.ID from dbo.TERM
                            inner join SESSION on SESSION.ID = TERM.SESSIONID 
                            where TERM.SESSIONID = @ID
                                  and TERM.TIMETABLEDAYID not in (select TIMETABLEDAY.ID 
                                                                  from TIMETABLEDAY
                                                                  where TIMETABLEDAY.TIMETABLEID = SESSION.TIMETABLEID ))
                            raiserror('BBERR_TERM_TIMETABLEDAYVALID', 13, 1)

                        if not exists(select ID from dbo.TERM where SESSIONID = @ID)
                            raiserror('BBERR_SESSION_ATLEASTONETERM', 13, 1)

                        --generate calendar entries

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

                        insert into @TempTbl (TERMID) 
                        select [ID] 
                            from 
                                dbo.[TERM] 
                            where
                                SESSIONID = @ID

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

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

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

                            exec dbo.USP_SCHEDULEDATE_GENERATEENTRIES @TERMID, null, null, null, @CHANGEAGENTID

                            set @RowId = @RowId + 1
                        end

                    end try

                    begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                    end catch

                    return 0