USP_DATAFORMTEMPLATE_VIEW_CLASS

The load procedure used by the view dataform template "Class View Form"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@COURSEID nvarchar(60) INOUT Course ID
@NAME nvarchar(60) INOUT Name
@STARTTERM nvarchar(100) INOUT Start term
@SECTION nvarchar(20) INOUT Section
@SCHOOL nvarchar(100) INOUT School
@ACADEMICYEAR nvarchar(100) INOUT Academic year
@SESSION nvarchar(100) INOUT Session
@GRADELEVELS nvarchar(200) INOUT Grade levels
@TARGETSIZE int INOUT Target class size
@MAXSIZE nvarchar(10) INOUT Maximum class size
@NUMBERENROLLED int INOUT Number enrolled
@SEATSAVAILABLE int INOUT Seats available
@CURRENTFACULTY nvarchar(100) INOUT CURRENTFACULTY
@CURRENTFACULTYID uniqueidentifier INOUT CURRENTFACULTYID
@CURRENTFACULTY2 nvarchar(100) INOUT CURRENTFACULTY2
@CURRENTFACULTYID2 uniqueidentifier INOUT CURRENTFACULTYID2
@CURRENTFACULTY3 nvarchar(100) INOUT CURRENTFACULTY3
@CURRENTFACULTYID3 uniqueidentifier INOUT CURRENTFACULTYID3
@PATTERNBLOCK nvarchar(100) INOUT Block
@FIRSTMEETING nvarchar(100) INOUT First meeting

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CLASS 
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @COURSEID nvarchar(60) = null output,
    @NAME nvarchar(60) = null output,
    @STARTTERM nvarchar(100) = null output,
    @SECTION nvarchar(20) = null output,
    @SCHOOL nvarchar(100) = null output,
    @ACADEMICYEAR nvarchar(100) = null output,
    @SESSION nvarchar(100) = null output,
    @GRADELEVELS nvarchar(200) = null output,
    @TARGETSIZE int = null output,
    @MAXSIZE nvarchar(10) = null output,
    @NUMBERENROLLED int = null output,
    @SEATSAVAILABLE int = null output,
    @CURRENTFACULTY nvarchar(100) = null output,
    @CURRENTFACULTYID uniqueidentifier = null output,
    @CURRENTFACULTY2 nvarchar(100) = null output,
    @CURRENTFACULTYID2 uniqueidentifier = null output,
    @CURRENTFACULTY3 nvarchar(100) = null output,
    @CURRENTFACULTYID3 uniqueidentifier = null output,
    @PATTERNBLOCK nvarchar(100) = null output,
    @FIRSTMEETING nvarchar(100) = null output
)
as
    set nocount on;

    -- be sure to set this, in case the select returns no rows

    set @DATALOADED = 0;

    -- populate the output parameters, which correspond to fields on the form.  Note that

    -- we set @DATALOADED = 1 to indicate that the load was successful.  Otherwise, the system

    -- will display a "no data loaded" message.

    select @DATALOADED = 1,
           @COURSEID =  dbo.COURSE.COURSEID, 
           @NAME = dbo.CLASS.NAME,
           @STARTTERM = dbo.UFN_TERMNAMECODE_GETDESCRIPTION(TERM.TERMNAMECODEID),
           @SECTION = dbo.CLASS.SECTION,
           @SCHOOL = dbo.CONSTITUENT.NAME,
           @ACADEMICYEAR = dbo.UFN_ACADEMICYEARNAMECODE_GETDESCRIPTION(ACADEMICYEAR.ACADEMICYEARNAMECODEID),
           @SESSION = dbo.UFN_SESSIONNAMECODE_GETDESCRIPTION(SESSION.SESSIONNAMECODEID),
           @GRADELEVELS = dbo.UFN_COURSE_GETGRADELEVELSTRING(COURSE.ID),
           @TARGETSIZE = CLASS.CLASSSIZETARGET,
           @MAXSIZE = case when CLASS.CLASSSIZEMAXIMUM = 0 then null else Cast(CLASS.CLASSSIZEMAXIMUM as varchar(10)) end,
           @NUMBERENROLLED = dbo.UFN_CLASS_GETNUMBERENROLLED(CLASS.ID),
           @SEATSAVAILABLE = 0,
           @PATTERNBLOCK = PATTERNBLOCK.NAME,
           @FIRSTMEETING = dbo.UFN_CLASSMEETINGGROUP_GETFIRSTMEETING(CLASSMEETINGGROUP.ID)
    from dbo.CLASS
        inner join dbo.CLASSMEETINGGROUP on CLASS.ID = CLASSMEETINGGROUP.CLASSID and CLASS.STARTDATE = CLASSMEETINGGROUP.STARTDATE
        inner join dbo.COURSE on dbo.CLASS.COURSEID = dbo.COURSE.ID
        inner join dbo.ACADEMICYEAR on COURSE.SCHOOLID = ACADEMICYEAR.SCHOOLID
        inner join dbo.CONSTITUENT on COURSE.SCHOOLID = CONSTITUENT.ID
        inner join dbo.SESSION on ACADEMICYEAR.ID = SESSION.ACADEMICYEARID
        inner join dbo.TERM on SESSION.ID = TERM.SESSIONID
            and TERM.STARTDATE = CLASSMEETINGGROUP.STARTDATE
            and TERM.ENDDATE = CLASSMEETINGGROUP.ENDDATE
        left join dbo.PATTERNBLOCK on CLASSMEETINGGROUP.PATTERNBLOCKID = PATTERNBLOCK.ID
    where dbo.CLASS.ID = @ID

    if @DATALOADED = 1
    begin
        if @TARGETSIZE > @NUMBERENROLLED
        begin
            select @SEATSAVAILABLE = @TARGETSIZE - @NUMBERENROLLED
        end

        declare @FACULTYRECORD table
        (
            ID uniqueidentifier,
            NAME nvarchar(154),
            ROW tinyint
        )

        insert into @FACULTYRECORD
        select
            CONSTITUENT.ID,
            CONSTITUENT.NAME,
            ROW_NUMBER() over (order by CONSTITUENT.NAME asc)
        from dbo.CLASSMEETINGGROUP
            inner join dbo.FACULTYCLASSMEETINGGROUP on CLASSMEETINGGROUP.ID = FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID
            inner join dbo.FACULTYCOURSE on FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID = FACULTYCOURSE.ID
            inner join dbo.CONSTITUENT on FACULTYCOURSE.FACULTYID = CONSTITUENT.ID
        where CLASSMEETINGGROUP.CLASSID = @ID
        group by CONSTITUENT.ID, CONSTITUENT.NAME
        order by CONSTITUENT.NAME asc

        select
            @CURRENTFACULTY = NAME,
            @CURRENTFACULTYID = ID
        from @FACULTYRECORD
        where [row] = 1

        select
            @CURRENTFACULTY2 = NAME,
            @CURRENTFACULTYID2 = ID
        from @FACULTYRECORD
        where [row] = 2

        select
            @CURRENTFACULTY3 = NAME,
            @CURRENTFACULTYID3 = ID
        from @FACULTYRECORD
        where [row] = 3
    end

    return 0;