UFN_STUDENTMARKINGCOLUMN_GETGRADES
Returns the classes and marking column grade information to display in the grid when entering grades by student
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STUDENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_STUDENTMARKINGCOLUMN_GETGRADES
(
@STUDENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier
)
returns @GRADESTABLE table (
ID uniqueidentifier null,
StudentCourseID uniqueidentifier not null,
ClassID uniqueidentifier not null,
CourseID uniqueidentifier not null,
CourseShortID nvarchar(12) not null,
CourseName nvarchar(60) not null,
Class nvarchar(20) not null,
WithdrawalDate date not null,
Teacher nvarchar(1000) null,
CourseGradingID uniqueidentifier not null,
MCID uniqueidentifier not null,
MCDisplayName nvarchar(10) not null,
TranslationTableID uniqueidentifier null,
Graded tinyint not null,
ValuesAllowedCode tinyint not null,
GradeTypeCode tinyint not null,
NumericGrade numeric(14, 2) null,
LetterGrade nvarchar(10) null,
TranslationTableGradeID uniqueidentifier null,
StudentClassMeetingGroupID uniqueidentifier not null,
StudentClassMeetingGroupStatusCode tinyint not null,
CourseGradingMarkingColumnID uniqueidentifier not null,
LowestScoreAllowed numeric(14,2) null,
HighestScoreAllowed numeric(14,2) null,
MarkingColumnSetID uniqueidentifier not null,
MCSequence int not null
)
as
begin
declare @SESSIONID uniqueidentifier
declare @SESSION_STARTDATE date
declare @SESSION_ENDDATE date
select
@SESSIONID = dbo.GRADINGAPPUSERSESSION.SESSIONID
from dbo.GRADINGAPPUSERSESSION
where dbo.GRADINGAPPUSERSESSION.ID = @CURRENTAPPUSERID
select
@SESSION_STARTDATE = min(STARTDATE),
@SESSION_ENDDATE = max(ENDDATE)
from dbo.TERM
where dbo.TERM.SESSIONID = @SESSIONID
declare @CLASSES table (
StudentCourseID uniqueidentifier not null,
ClassID uniqueidentifier,
CourseID uniqueidentifier,
CourseShortID nvarchar(12),
CourseName nvarchar(60) null,
Class nvarchar(20) null,
Teacher nvarchar(1000) null,
StudentClassMeetingGroupID uniqueidentifier,
StudentClassMeetingGroupStatusCode tinyint not null,
TermNameCodeID uniqueidentifier,
TermStart date,
TermEnd date,
WithdrawalDate date,
SessionID uniqueidentifier,
SessionStart date,
SessionEnd date,
SchoolID uniqueidentifier)
--Get the classes the student is enrolled in
Insert @CLASSES
Select
STUDENTCOURSE.ID,
CLASS.ID,
COURSE.ID,
COURSE.COURSEID,
COURSE.NAME,
CLASS.SECTION,
dbo.UFN_CLASS_GETFACULTYSTRING(CLASS.ID),
STUDENTCLASSMEETINGGROUP.ID,
STUDENTCLASSMEETINGGROUP.STATUSCODE,
TERM.TERMNAMECODEID,
TERM.STARTDATE,
TERM.ENDDATE,
TERM.WITHDRAWALDATE,
TERM.SESSIONID,
(select MIN(STARTDATE) from dbo.TERM t1 where t1.SESSIONID = SESSION.ID),
(select MAX(ENDDATE) from dbo.TERM t2 where t2.SESSIONID = SESSION.ID),
ACADEMICYEAR.SCHOOLID
from dbo.STUDENTCOURSE
inner join dbo.STUDENTCLASSMEETINGGROUP on STUDENTCOURSE.ID = STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID
inner join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
inner join dbo.CLASS on CLASSMEETINGGROUP.CLASSID = CLASS.ID
inner join dbo.COURSE on Class.COURSEID = COURSE.ID
inner join dbo.TERM on CLASSMEETINGGROUP.STARTDATE = TERM.STARTDATE and CLASSMEETINGGROUP.ENDDATE = TERM.ENDDATE
inner join dbo.SESSION on TERM.SESSIONID = SESSION.ID
inner join dbo.ACADEMICYEAR on SESSION.ACADEMICYEARID = ACADEMICYEAR.ID
where (STUDENTCOURSE.STUDENTID = @STUDENTID)
--and TERM.STARTDATE >= @SESSION_STARTDATE
--and TERM.ENDDATE <= @SESSION_ENDDATE
--We want to include overlapping sessions to account for different schools that have slightly different date ranges,
-- so just getting records where the Term is wholly contained within the Session doesn't work.
and (TERM.STARTDATE between @SESSION_STARTDATE and @SESSION_ENDDATE
or TERM.ENDDATE between @SESSION_STARTDATE and @SESSION_ENDDATE
or @SESSION_STARTDATE between TERM.STARTDATE and TERM.ENDDATE
or @SESSION_ENDDATE between TERM.STARTDATE and TERM.ENDDATE)
and ACADEMICYEAR.SCHOOLID = COURSE.SCHOOLID
--Now get the Course Grading info and any actual Grades that go with those classes.
Insert @GRADESTABLE
Select
STUDENTMARKINGCOLUMNGRADE.ID,
c.STUDENTCOURSEID,
c.CLASSID,
c.COURSEID,
c.COURSESHORTID,
c.COURSENAME,
c.CLASS,
c.WITHDRAWALDATE,
c.TEACHER,
COURSEGRADING.ID,
MARKINGCOLUMN.ID,
MARKINGCOLUMN.DISPLAYNAME,
COURSEGRADINGMARKINGCOLUMN.TRANSLATIONTABLEID,
(Select Case COURSEGRADINGMARKINGCOLUMN.GRADED when 0 then 0 else (Case MarkingColumn.AllTerms When 1 Then 1 else (Case When (select ID from dbo.MARKINGCOLUMNTERM where c.TERMNAMECODEID = MARKINGCOLUMNTERM.TERMNAMECODEID and
MARKINGCOLUMNTERM.MARKINGCOLUMNID = MARKINGCOLUMN.ID) is null then 0 else 1 End) End) End) GRADED,
COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE,
ISNULL(STUDENTMARKINGCOLUMNGRADE.GRADETYPECODE,''),
STUDENTMARKINGCOLUMNGRADE.NUMERICGRADEVALUE,
ISNULL((SELECT GRADE From TRANSLATIONTABLEGRADE where ID = STUDENTMARKINGCOLUMNGRADE.TRANSLATIONTABLEGRADEID),''),
STUDENTMARKINGCOLUMNGRADE.TRANSLATIONTABLEGRADEID,
c.STUDENTCLASSMEETINGGROUPID,
c.StudentClassMeetingGroupStatusCode,
COURSEGRADINGMARKINGCOLUMN.ID,
TRANSLATIONTABLE.LOWESTSCOREALLOWED,
TRANSLATIONTABLE.HIGHESTSCOREALLOWED,
MARKINGCOLUMN.MARKINGCOLUMNSETID,
MARKINGCOLUMN.SEQUENCE
from @CLASSES c
inner join dbo.V_COURSEGRADING as COURSEGRADING on COURSEGRADING.COURSEID = c.CourseID and COURSEGRADING.STARTDATE = c.SESSIONSTART and COURSEGRADING.ENDDATE = c.SESSIONEND
inner join dbo.COURSEGRADINGMARKINGCOLUMN on COURSEGRADING.ID = COURSEGRADINGMARKINGCOLUMN.COURSEGRADINGID
left join dbo.TRANSLATIONTABLE on COURSEGRADINGMARKINGCOLUMN.TRANSLATIONTABLEID = TRANSLATIONTABLE.ID
inner join dbo.MARKINGCOLUMN on COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = MARKINGCOLUMN.ID
left join dbo.STUDENTMARKINGCOLUMNGRADE on c.STUDENTCLASSMEETINGGROUPID = STUDENTMARKINGCOLUMNGRADE.STUDENTCLASSMEETINGGROUPID
and STUDENTMARKINGCOLUMNGRADE.COURSEGRADINGMARKINGCOLUMNID = COURSEGRADINGMARKINGCOLUMN.ID
return
end