USP_DATAFORMTEMPLATE_VIEW_FACULTY_CURRENTTERM
The load procedure used by the view dataform template "Faculty Current Term View Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@ACADEMICYEARID | uniqueidentifier | INOUT | ACADEMICYEARID |
@SESSIONID | uniqueidentifier | INOUT | SESSIONID |
@TERMID | uniqueidentifier | INOUT | TERMID |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_FACULTY_CURRENTTERM
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@ACADEMICYEARID uniqueidentifier = null output,
@SESSIONID uniqueidentifier = null output,
@TERMID uniqueidentifier = null output
)
as
set nocount on;
set @DATALOADED = 1;
-- WARNING: The Academic Year, Session, and Term do not necessarily reflect the actual ID - but are instead representative
declare @CURRENTDATE date = getdate()
-- Track the number of courses a teacher is teaching currently per school to break ties
declare @SCHOOLFACULTY table
(
ID uniqueidentifier,
[COUNT] int
)
insert into @SCHOOLFACULTY
select
COURSE.SCHOOLID,
count(FACULTYCLASSMEETINGGROUP.ID)
from dbo.FACULTYCOURSE
inner join dbo.FACULTYCLASSMEETINGGROUP on FACULTYCOURSE.ID = FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID
inner join dbo.CLASSMEETINGGROUP on FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
inner join dbo.COURSE on FACULTYCOURSE.COURSEID = COURSE.ID
where @CURRENTDATE >= CLASSMEETINGGROUP.STARTDATE
and @CURRENTDATE <= CLASSMEETINGGROUP.ENDDATE
group by COURSE.SCHOOLID
declare @ACADEMICYEARS table
(
ID uniqueidentifier,
LABEL nvarchar(200)
)
insert into @ACADEMICYEARS
exec dbo.USP_SIMPLEDATALIST_ACADEMICYEAR_GROUPEDBYTIME
select top(1)
@ACADEMICYEARID = AY.ID
from @ACADEMICYEARS AY
inner join dbo.ACADEMICYEAR on AY.ID = ACADEMICYEAR.ID
left join @SCHOOLFACULTY SCHOOLS on ACADEMICYEAR.SCHOOLID = SCHOOLS.ID
where @CURRENTDATE >= ACADEMICYEAR.STARTDATE
and @CURRENTDATE <= ACADEMICYEAR.ENDDATE
order by SCHOOLS.COUNT desc
if @ACADEMICYEARID is not null
begin
declare @SESSIONS table
(
ID uniqueidentifier,
LABEL nvarchar(200)
)
insert into @SESSIONS
exec dbo.USP_SIMPLEDATALIST_SESSION_GROUPEDBYTIME @ACADEMICYEARID
select top(1)
@SESSIONID = S.ID
from @SESSIONS S
inner join dbo.SESSION on S.ID = SESSION.ID
inner join dbo.TERM on SESSION.ID = TERM.SESSIONID
inner join dbo.ACADEMICYEAR on SESSION.ACADEMICYEARID = ACADEMICYEAR.ID
left join @SCHOOLFACULTY SCHOOLS on ACADEMICYEAR.SCHOOLID = SCHOOLS.ID
group by S.ID, SCHOOLS.[COUNT]
having @CURRENTDATE >= min(TERM.STARTDATE)
and @CURRENTDATE <= max(TERM.ENDDATE)
order by SCHOOLS.[COUNT] desc
if @SESSIONID is not null
begin
declare @TERMS table
(
ID uniqueidentifier,
LABEL nvarchar(200)
)
insert into @TERMS
exec dbo.USP_SIMPLEDATALIST_TERM_GROUPEDBYTIME @ACADEMICYEARID, @SESSIONID
select top(1)
@TERMID = T.ID
from @TERMS T
inner join dbo.TERM on T.ID = TERM.ID
inner join dbo.SESSION on TERM.SESSIONID = SESSION.ID
inner join dbo.ACADEMICYEAR on SESSION.ACADEMICYEARID = ACADEMICYEAR.ID
left join @SCHOOLFACULTY SCHOOLS on ACADEMICYEAR.SCHOOLID = SCHOOLS.ID
where @CURRENTDATE >= TERM.STARTDATE
and @CURRENTDATE <= TERM.ENDDATE
order by SCHOOLS.[COUNT] desc
end
end
return 0;