UFN_COURSEGRADING_GETMARKINGCOLUMNS
Get marking columns for the provided course grading.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@COURSEGRADINGID | uniqueidentifier | IN | |
@COURSEID | uniqueidentifier | IN | |
@SESSIONSTARTDATE | date | IN | |
@SESSIONENDDATE | date | IN |
Definition
Copy
CREATE function dbo.UFN_COURSEGRADING_GETMARKINGCOLUMNS
(
@COURSEGRADINGID uniqueidentifier = null,
@COURSEID uniqueidentifier,
@SESSIONSTARTDATE date,
@SESSIONENDDATE date
)
returns @TEMPMARKINGCOLUMNS table
(
ID uniqueidentifier,
MARKINGCOLUMNID uniqueidentifier,
DISPLAYNAME varchar(10),
SEQUENCE int,
GRADED bit,
TRANSLATIONTABLEID uniqueidentifier,
VALUESALLOWEDCODE tinyint,
HASGRADE bit,
HASINVALIDTT bit,
VALIDVALUESALLOWED tinyint
)
as
begin
declare @SESSIONID uniqueidentifier
--grab sessionID for easier lookup
select @SESSIONID = dbo.UFN_SESSION_GET_FORSCHOOL_BYDATE(COURSE.SCHOOLID, @SESSIONSTARTDATE, @SESSIONENDDATE)
from dbo.COURSE
where COURSE.ID = @COURSEID
if @COURSEGRADINGID is null
begin
insert into @TEMPMARKINGCOLUMNS
(ID, MARKINGCOLUMNID, DISPLAYNAME, SEQUENCE, GRADED, TRANSLATIONTABLEID, VALUESALLOWEDCODE, HASGRADE, HASINVALIDTT, VALIDVALUESALLOWED)
select
null,
MARKINGCOLUMN.ID,
MARKINGCOLUMN.DISPLAYNAME,
MARKINGCOLUMN.SEQUENCE,
0,
null,
0,
0,
0,
0
from dbo.MARKINGCOLUMN
join dbo.MARKINGCOLUMNDESCRIPTIONCODE on MARKINGCOLUMN.MARKINGCOLUMNDESCRIPTIONCODEID = MARKINGCOLUMNDESCRIPTIONCODE.ID
join dbo.SESSION on MARKINGCOLUMN.MARKINGCOLUMNSETID = SESSION.MARKINGCOLUMNSETID
where
SESSION.ID = @SESSIONID and
(((select count(*) from dbo.UFN_COURSERESTRICTION_VALIDDATESBYLENGTHINTERMS(@SESSIONSTARTDATE, @SESSIONENDDATE, @COURSEID)) = 0) or
(MARKINGCOLUMN.ALLTERMS = 1) or
(exists
(select *
from dbo.MARKINGCOLUMNTERM
join dbo.TERM on MARKINGCOLUMNTERM.TERMNAMECODEID = TERM.TERMNAMECODEID
join dbo.UFN_COURSERESTRICTION_VALIDDATESBYLENGTHINTERMS(@SESSIONSTARTDATE, @SESSIONENDDATE, @COURSEID) CRT on TERM.STARTDATE between CRT.STARTDATE and CRT.ENDDATE
where
MARKINGCOLUMNID = MARKINGCOLUMN.ID and
TERM.SESSIONID = @SESSIONID )))
end
else
begin
insert into @TEMPMARKINGCOLUMNS
(ID, MARKINGCOLUMNID, DISPLAYNAME, SEQUENCE, GRADED, TRANSLATIONTABLEID, VALUESALLOWEDCODE, HASGRADE, HASINVALIDTT, VALIDVALUESALLOWED)
select
COURSEGRADINGMARKINGCOLUMN.ID,
coalesce(COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID, MARKINGCOLUMN.ID) 'MARKINGCOLUMNID',
MARKINGCOLUMN.DISPLAYNAME,
MARKINGCOLUMN.SEQUENCE,
COURSEGRADINGMARKINGCOLUMN.GRADED 'GRADED',
COURSEGRADINGMARKINGCOLUMN.TRANSLATIONTABLEID,
coalesce(COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE, 0) 'VALUESALLOWEDCODE',
case when exists (select * from dbo.STUDENTMARKINGCOLUMNGRADE
where (STUDENTMARKINGCOLUMNGRADE.COURSEGRADINGMARKINGCOLUMNID = COURSEGRADINGMARKINGCOLUMN.ID) and
STUDENTMARKINGCOLUMNGRADE.GRADEISBLANK = 0) then 1 else 0 end,
case when exists (select * from dbo.UFN_COURSEGRADINGMARKINGCOLUMN_INVALIDTRANSLATIONTABLES(COURSEGRADINGMARKINGCOLUMN.ID, COURSEGRADINGMARKINGCOLUMN.VALUESALLOWEDCODE)) then 1 else 0 end,
coalesce(dbo.UFN_COURSEGRADINGMARKINGCOLUMN_VALIDVALUESALLOWED(COURSEGRADINGMARKINGCOLUMN.ID), 0) 'VALIDVALUESALLOWED'
from dbo.COURSEGRADINGMARKINGCOLUMN
join dbo.COURSEGRADING on COURSEGRADINGMARKINGCOLUMN.COURSEGRADINGID = COURSEGRADING.ID
join dbo.COURSE on COURSEGRADING.COURSEID = COURSE.ID
--don't join on the CourseGradingMarkingColumn associated with the wrong CourseGradingID
right join dbo.MARKINGCOLUMN on COURSEGRADINGMARKINGCOLUMN.MARKINGCOLUMNID = MARKINGCOLUMN.ID and (COURSEGRADINGID = @COURSEGRADINGID)
--need to join on the session on COURSEGRADING in the case where marking column set on the session gets changed.
right join dbo.SESSION on (MARKINGCOLUMN.MARKINGCOLUMNSETID = SESSION.MARKINGCOLUMNSETID) or (SESSION.ID = dbo.UFN_SESSION_GET_FORSCHOOL_BYDATE(COURSE.SCHOOLID, COURSEGRADING.STARTDATE, COURSEGRADING.ENDDATE))
right join dbo.MARKINGCOLUMNDESCRIPTIONCODE on MARKINGCOLUMN.MARKINGCOLUMNDESCRIPTIONCODEID = MARKINGCOLUMNDESCRIPTIONCODE.ID
where
(SESSION.ID = @SESSIONID) and
((COURSEGRADINGID = @COURSEGRADINGID) or
-- add marking columns that are now valid after some changes in marking column set or course restriction
-- delete is handled in UIModel in order for them to be deleted from the db
((COURSEGRADINGID is null) and
(((select count(*) from dbo.UFN_COURSERESTRICTION_VALIDDATESBYLENGTHINTERMS(@SESSIONSTARTDATE, @SESSIONENDDATE, @COURSEID)) = 0) or
(MARKINGCOLUMN.ALLTERMS = 1) or
(exists
(select *
from dbo.MARKINGCOLUMNTERM
join dbo.TERM on MARKINGCOLUMNTERM.TERMNAMECODEID = TERM.TERMNAMECODEID
join dbo.UFN_COURSERESTRICTION_VALIDDATESBYLENGTHINTERMS(@SESSIONSTARTDATE, @SESSIONENDDATE, @COURSEID) CRT on TERM.STARTDATE between CRT.STARTDATE and CRT.ENDDATE
where
MARKINGCOLUMNID = MARKINGCOLUMN.ID and
TERM.SESSIONID = @SESSIONID )))))
end
return
end