USP_SIMPLEDATALIST_EDITSTUDENTSCHEDULE_CLASS

Displays class information given a context

Parameters

Parameter Parameter Type Mode Description
@COURSEID uniqueidentifier IN COURSEID
@FILTERBY_TERMID uniqueidentifier IN FILTERBY_TERMID
@ENROLLMENT_TERMID uniqueidentifier IN ENROLLMENT_TERMID
@STARTTERMONLY bit IN STARTTERMONLY
@CURRENTCLASSID uniqueidentifier IN CURRENTCLASSID

Definition

Copy


CREATE procedure dbo.USP_SIMPLEDATALIST_EDITSTUDENTSCHEDULE_CLASS
(
    @COURSEID uniqueidentifier,
    @FILTERBY_TERMID uniqueidentifier,
    @ENROLLMENT_TERMID uniqueidentifier,
    @STARTTERMONLY bit = null,
    @CURRENTCLASSID uniqueidentifier = null
)
as
    if @COURSEID is null
        select top(0) '' as VALUE, '' as LABEL
    else
        select
            CLASS.ID as VALUE,
            CLASS.SECTION + ' (' + cast(
                coalesce((
                    select MAX(CT)
                    from (
                        select
                            COUNT(STUDENTCLASSMEETINGGROUP.ID) as CT
                        from dbo.STUDENTCLASSMEETINGGROUP
                            inner join dbo.CLASSMEETINGGROUP on dbo.STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = dbo.CLASSMEETINGGROUP.ID
                        where CLASSMEETINGGROUP.CLASSID = CLASS.ID
                            and STUDENTCLASSMEETINGGROUP.STATUSCODE = 0    
                            and ENROLLMENT_CLASSMEETINGGROUP.STARTDATE <= CLASSMEETINGGROUP.STARTDATE
                        group by CLASSMEETINGGROUP.ID
                    ) T
                ), 0)
            as nvarchar(20)) + ')' +
                coalesce(' ' + 
                    (select stuff(
                        (select '; ' + CONSTITUENT.KEYNAME +
                            case when CONSTITUENT.FIRSTNAME is null or CONSTITUENT.FIRSTNAME = ''
                                then ''
                                else ', ' + CONSTITUENT.FIRSTNAME
                            end as [text()]
                        from dbo.FACULTYCLASSMEETINGGROUP
                            inner join dbo.FACULTYCOURSE on FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID = FACULTYCOURSE.ID
                            inner join dbo.CONSTITUENT on FACULTYCOURSE.FACULTYID = CONSTITUENT.ID
                        where FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID = ENROLLMENT_CLASSMEETINGGROUP.ID
                        group by CONSTITUENT.ID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME
                        order by CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME asc
                        for xml path('')),
                    1, 2, ''))
                , '') as LABEL
        from dbo.CLASS

            inner join dbo.CLASSMEETINGGROUP FILTERBY_CLASSMEETINGGROUP on
                CLASS.ID = FILTERBY_CLASSMEETINGGROUP.CLASSID and
                (@STARTTERMONLY is null or @STARTTERMONLY <> 1 or CLASS.STARTDATE = FILTERBY_CLASSMEETINGGROUP.STARTDATE)
            inner join dbo.TERM FILTERBY_TERM on
                @FILTERBY_TERMID = FILTERBY_TERM.ID and
                FILTERBY_CLASSMEETINGGROUP.STARTDATE = FILTERBY_TERM.STARTDATE and
                FILTERBY_CLASSMEETINGGROUP.ENDDATE = FILTERBY_TERM.ENDDATE

            inner join dbo.CLASSMEETINGGROUP ENROLLMENT_CLASSMEETINGGROUP on
                CLASS.ID = ENROLLMENT_CLASSMEETINGGROUP.CLASSID
            inner join dbo.TERM ENROLLMENT_TERM on
                @ENROLLMENT_TERMID = ENROLLMENT_TERM.ID and
                ENROLLMENT_CLASSMEETINGGROUP.STARTDATE = ENROLLMENT_TERM.STARTDATE and
                ENROLLMENT_CLASSMEETINGGROUP.ENDDATE = ENROLLMENT_TERM.ENDDATE

        where CLASS.COURSEID = @COURSEID
            and (@CURRENTCLASSID is null or CLASS.ID <> @CURRENTCLASSID)
        order by CLASS.SECTION