UFN_MARKINGCOLUMN_GETGRADEDTERMS

Returns graded terms that need to be associated with the given marking column.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@MARKINGCOLUMNID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_MARKINGCOLUMN_GETGRADEDTERMS
(
    @MARKINGCOLUMNID uniqueidentifier = null
)
returns table
as return (

        select 
            ENROLLEDTERM.TERMNAMECODEID, 
            MARKINGCOLUMNTERM.ID 'MARKINGCOLUMNTERMID'
            case when min(case when (OTHER_ENROLLMENTS.ID is null) then 0 else 1 end) > 0 then 1 else 0 end 'ENROLLEDINOTHERTERMS',                                    
            case when min(case when (OTHER_ENROLLMENTS.ID is null) then 0 else 1 end) > 0 then dbo.UDA_BUILDLIST(OTHER_ENROLLEDTERMS.TERMNAMECODEID) else '' end 'OTHERENROLLEDTERMS'  
        from dbo.STUDENTMARKINGCOLUMNGRADE
        inner join dbo.COURSEGRADINGMARKINGCOLUMN 
            on STUDENTMARKINGCOLUMNGRADE.COURSEGRADINGMARKINGCOLUMNID = COURSEGRADINGMARKINGCOLUMN.ID
        inner join dbo.COURSEGRADING 
            on COURSEGRADINGMARKINGCOLUMN.COURSEGRADINGID = COURSEGRADING.ID
        inner join dbo.COURSE 
            on COURSEGRADING.COURSEID = COURSE.ID        
        inner join dbo.STUDENTCLASSMEETINGGROUP 
            on STUDENTMARKINGCOLUMNGRADE.STUDENTCLASSMEETINGGROUPID = STUDENTCLASSMEETINGGROUP.ID
        inner join dbo.STUDENTCOURSE 
            on STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID = STUDENTCOURSE.ID
        left outer join dbo.STUDENTCLASSMEETINGGROUP ENROLLMENTS 
            on STUDENTCOURSE.ID = ENROLLMENTS.STUDENTCOURSEID
            --we want to allow the same studentClassMeetingGroup as the student grade so the term not on the student grade can be verified

            --and ENROLLMENTS.ID <> STUDENTCLASSMEETINGGROUP.ID 

        --make sure this term is enrolled (even if it's not the one on the student grade).            

        left outer join dbo.CLASSMEETINGGROUP ENROLLED_CLASSMEETINGGROUP
            on ENROLLMENTS.CLASSMEETINGGROUPID = ENROLLED_CLASSMEETINGGROUP.ID
        left outer join dbo.TERM ENROLLEDTERM 
            on ENROLLEDTERM.ID = dbo.UFN_TERM_GET_FORSCHOOL_BYDATE(COURSE.SCHOOLID, ENROLLED_CLASSMEETINGGROUP.STARTDATE, ENROLLED_CLASSMEETINGGROUP.ENDDATE)                            
        left outer join dbo.MARKINGCOLUMNTERM 
            on ENROLLEDTERM.TERMNAMECODEID = MARKINGCOLUMNTERM.TERMNAMECODEID and
                COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = MARKINGCOLUMNTERM.MARKINGCOLUMNID                
        --join to check there are other enrollments other than 'this' term.

        left outer join dbo.STUDENTCLASSMEETINGGROUP OTHER_ENROLLMENTS 
            on STUDENTCOURSE.ID = OTHER_ENROLLMENTS.STUDENTCOURSEID and 
                OTHER_ENROLLMENTS.ID <> STUDENTCLASSMEETINGGROUP.ID
        left outer join dbo.STUDENTCLASSMEETINGGROUP OTHER_ENROLLMENTS_WITHDUPLICATES 
            on STUDENTCOURSE.ID = OTHER_ENROLLMENTS_WITHDUPLICATES.STUDENTCOURSEID
            --we want to allow the same studentClassMeetingGroup as the student grade so the term not on the student grade will get the corresponding "other term(s)"

            --and OTHER_ENROLLMENTS.ID <> STUDENTCLASSMEETINGGROUP.ID 

        left outer join dbo.CLASSMEETINGGROUP OTHER_CLASSMEETINGGROUP
            on OTHER_ENROLLMENTS_WITHDUPLICATES.CLASSMEETINGGROUPID = OTHER_CLASSMEETINGGROUP.ID and 
                (ENROLLEDTERM.STARTDATE <> OTHER_CLASSMEETINGGROUP.STARTDATE or ENROLLEDTERM.ENDDATE <> OTHER_CLASSMEETINGGROUP.ENDDATE)
        left outer join dbo.TERM OTHER_ENROLLEDTERMS 
            on ENROLLEDTERM.ID <> OTHER_ENROLLEDTERMS.ID and 
                OTHER_ENROLLEDTERMS.ID = dbo.UFN_TERM_GET_FORSCHOOL_BYDATE(COURSE.SCHOOLID, OTHER_CLASSMEETINGGROUP.STARTDATE, OTHER_CLASSMEETINGGROUP.ENDDATE)                
        where ((@MARKINGCOLUMNID is null) or (COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = @MARKINGCOLUMNID)) and
            STUDENTMARKINGCOLUMNGRADE.GRADEISBLANK = 0
        group by ENROLLEDTERM.TERMNAMECODEID, MARKINGCOLUMNTERM.ID           
)