UFN_STUDENTMARKINGCOLUMNGRADE_VALIDGRADE
Returns true if the grade corresponds to the translation table of the course grading marking column.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STUDENTCLASSMEETINGGROUPID | uniqueidentifier | IN | |
@COURSEGRADINGMARKINGCOLUMNID | uniqueidentifier | IN | |
@TRANSLATIONTABLEGRADEID | uniqueidentifier | IN | |
@NUMERICGRADE | nvarchar(14) | IN | |
@GRADETYPECODE | tinyint | IN |
Definition
Copy
CREATE function dbo.UFN_STUDENTMARKINGCOLUMNGRADE_VALIDGRADE
(
@STUDENTCLASSMEETINGGROUPID uniqueidentifier = null,
@COURSEGRADINGMARKINGCOLUMNID uniqueidentifier = null,
@TRANSLATIONTABLEGRADEID uniqueidentifier = null,
@NUMERICGRADE nvarchar(14) = null,
@GRADETYPECODE tinyint
)
returns bit
with execute as caller
as begin
-- do work here and return a value
declare @retval bit = 0;
declare @CASTNUMERICGRADE numeric(14,2) = null;
if (@NUMERICGRADE <> '')
set @CASTNUMERICGRADE = CONVERT(numeric(14, 2), @NUMERICGRADE)
if exists
(select * from dbo.STUDENTCLASSMEETINGGROUP
inner join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
inner join dbo.CLASS on CLASSMEETINGGROUP.CLASSID = CLASS.ID
inner join dbo.V_COURSEGRADING as COURSEGRADING on CLASS.COURSEID = COURSEGRADING.COURSEID
inner join dbo.COURSEGRADINGMARKINGCOLUMN on COURSEGRADING.ID = COURSEGRADINGMARKINGCOLUMN.COURSEGRADINGID
where (CLASSMEETINGGROUP.STARTDATE >= COURSEGRADING.STARTDATE and CLASSMEETINGGROUP.ENDDATE <= COURSEGRADING.ENDDATE) and
STUDENTCLASSMEETINGGROUP.ID = @STUDENTCLASSMEETINGGROUPID and
COURSEGRADINGMARKINGCOLUMN.ID = @COURSEGRADINGMARKINGCOLUMNID)
begin
--Blank grades are always valid
if (@CASTNUMERICGRADE is null and @TRANSLATIONTABLEGRADEID is null)
set @retval = 1
else if (@GRADETYPECODE = 1)
begin
--Letter grade
if (@CASTNUMERICGRADE is null) and
exists (select * from dbo.TRANSLATIONTABLEGRADE
inner join dbo.COURSEGRADINGMARKINGCOLUMN on TRANSLATIONTABLEGRADE.TRANSLATIONTABLEID = COURSEGRADINGMARKINGCOLUMN.TRANSLATIONTABLEID
where COURSEGRADINGMARKINGCOLUMN.ID = @COURSEGRADINGMARKINGCOLUMNID and
COURSEGRADINGMARKINGCOLUMN.GRADED = 1 and
TRANSLATIONTABLEGRADE.ID = @TRANSLATIONTABLEGRADEID and
((COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE = @GRADETYPECODE) or (COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE = 0)))
set @retval = 1;
end
else if (@GRADETYPECODE = 2)
begin
--Numeric grade
if (@TRANSLATIONTABLEGRADEID is null) and
exists (select * from dbo.TRANSLATIONTABLE
inner join dbo.COURSEGRADINGMARKINGCOLUMN on TRANSLATIONTABLE.ID = COURSEGRADINGMARKINGCOLUMN.TRANSLATIONTABLEID
where COURSEGRADINGMARKINGCOLUMN.ID = @COURSEGRADINGMARKINGCOLUMNID and
COURSEGRADINGMARKINGCOLUMN.GRADED = 1 and
(@CASTNUMERICGRADE between TRANSLATIONTABLE.LOWESTSCOREALLOWED and TRANSLATIONTABLE.HIGHESTSCOREALLOWED) and
((COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE = @GRADETYPECODE) or (COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE = 0)))
set @retval = 1;
end
end
return @retval
end