USP_DATAFORMTEMPLATE_ADD_CLASS

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

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@SESSIONID uniqueidentifier IN
@COURSEID uniqueidentifier IN Create class for
@TERMID uniqueidentifier IN Starting in
@SECTION nvarchar(20) IN Section
@FACULTYID uniqueidentifier IN Faculty
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@PATTERNBLOCKID uniqueidentifier IN Block

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_CLASS
                    (
                        @ID uniqueidentifier = null output,
                        @SESSIONID uniqueidentifier = null,
                        @COURSEID uniqueidentifier = null,
                        @TERMID uniqueidentifier = null,
                        @SECTION nvarchar(20) = null,
                        @FACULTYID uniqueidentifier = null,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @PATTERNBLOCKID uniqueidentifier = 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()

                    declare @SESSION_STARTDATE date
                    declare @SESSION_ENDDATE date

                    select
                        @SESSION_STARTDATE = min(STARTDATE),
                        @SESSION_ENDDATE = max(ENDDATE)
                    from dbo.TERM
                    where TERM.SESSIONID = @SESSIONID

                    declare @NAME nvarchar(100)
                    declare @LENGTHINTERMS int
                    select
                        @NAME = COURSE.NAME,
                        @LENGTHINTERMS = COURSERESTRICTION.LENGTHINTERMS
                    from dbo.COURSE
                        inner join dbo.V_COURSERESTRICTION as COURSERESTRICTION on COURSE.ID = COURSERESTRICTION.COURSEID
                    where COURSE.ID = @COURSEID
                        and COURSERESTRICTION.STARTDATE = @SESSION_STARTDATE
                        and COURSERESTRICTION.ENDDATE = @SESSION_ENDDATE

                    if @NAME is null
                        raiserror('BBERR_COURSE_MISSING_COURSERESTRICTION', 13, 1);                

                    declare @START datetime
                    declare @END datetime

                    select @START = STARTDATE
                    from dbo.TERM
                    where ID = @TERMID

                    select @END = T.ENDDATE
                    from
                    (
                        select ENDDATE, ROW_NUMBER() OVER(ORDER BY STARTDATE ASC) AS TERMNUMBER
                        from dbo.TERM
                        where SESSIONID = @SESSIONID and STARTDATE >= @START
                    ) T
                    where T.TERMNUMBER = @LENGTHINTERMS

                    insert into dbo.CLASS
                    (
                        ID,
                        COURSEID,
                        NAME,
                        SECTION,
                        CLASSSIZEMINIMUM,
                        CLASSSIZETARGET,
                        CLASSSIZEMAXIMUM,
                        CLASSESPERTERMMINIMUM,
                        CLASSESPERTERMTARGET,
                        CLASSESPERTERMMAXIMUM,
                        STARTDATE,
                        ENDDATE,
                        ADDEDBYID,
                        CHANGEDBYID,
                        DATEADDED,
                        DATECHANGED
                    )
                    select
                        @ID,
                        @COURSEID,
                        @NAME,
                        @SECTION,
                        CLASSSIZEMINIMUM,
                        CLASSSIZETARGET,
                        CLASSSIZEMAXIMUM,
                        CLASSESPERTERMMINIMUM,
                        CLASSESPERTERMTARGET,
                        CLASSESPERTERMMAXIMUM,
                        @START,
                        @END,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    from dbo.COURSE
                    where COURSE.ID = @COURSEID

                    insert into dbo.CLASSMEETINGGROUP
                    (
                        ID,
                        CLASSID,
                        STARTDATE,
                        ENDDATE,
                        PATTERNBLOCKID,
                        ADDEDBYID,
                        CHANGEDBYID,
                        DATEADDED,
                        DATECHANGED
                    )
                    select top (@LENGTHINTERMS)
                        newid(),
                        @ID,
                        STARTDATE,
                        ENDDATE,
                        @PATTERNBLOCKID,
                        @CHANGEAGENTID,
                        @CHANGEAGENTID,
                        @CURRENTDATE,
                        @CURRENTDATE
                    from dbo.TERM
                    where SESSIONID = @SESSIONID and STARTDATE >= @START
                    order by TERM.STARTDATE

                    if @FACULTYID is not null
                    begin
                        declare @FACULTYCOURSEID uniqueidentifier
                        select @FACULTYCOURSEID = ID
                        from dbo.FACULTYCOURSE where FACULTYID = @FACULTYID and COURSEID = @COURSEID

                        if @FACULTYCOURSEID is null
                        begin
                            set @FACULTYCOURSEID = newid()

                            insert into dbo.FACULTYCOURSE
                            (
                                ID,
                                FACULTYID,
                                COURSEID,
                                ADDEDBYID,
                                CHANGEDBYID,
                                DATEADDED,
                                DATECHANGED
                            )
                            values
                            (
                                @FACULTYCOURSEID,
                                @FACULTYID,
                                @COURSEID,
                                @CHANGEAGENTID,
                                @CHANGEAGENTID,
                                @CURRENTDATE,
                                @CURRENTDATE
                            )
                        end

                        insert into dbo.FACULTYCLASSMEETINGGROUP
                        (
                            ID,
                            FACULTYCOURSEID,
                            CLASSMEETINGGROUPID,
                            ADDEDBYID,
                            CHANGEDBYID,
                            DATEADDED,
                            DATECHANGED
                        )
                        select
                            newid(),
                            @FACULTYCOURSEID,
                            CLASSMEETINGGROUP.ID,
                            @CHANGEAGENTID,
                            @CHANGEAGENTID,
                            @CURRENTDATE,
                            @CURRENTDATE
                        from dbo.CLASSMEETINGGROUP 
                        where CLASSID = @ID
                    end

                    if @PATTERNBLOCKID is not null
                    begin
                        exec dbo.USP_CLASSMEETINGTEMPLATE_CREATEFROMBLOCK @ID, @PATTERNBLOCKID, @CHANGEAGENTID
                        exec dbo.USP_CLASSMEETING_CREATEFROMTEMPLATES @ID, @CHANGEAGENTID
                    end

                return 0