USP_REPORT_FACULTYSCHEDULELIST
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECORDQUERYID | uniqueidentifier | IN | |
@RECORDID_SINGLE | uniqueidentifier | IN | |
@SCHOOLID | uniqueidentifier | IN | |
@ACADEMICYEARID | uniqueidentifier | IN | |
@SESSIONID | uniqueidentifier | IN | |
@TERMS | nvarchar(max) | IN | |
@DISPLAYBY | tinyint | IN | |
@INCLUDENOMEETINGS | bit | IN | |
@PERIODS | nvarchar(max) | IN | |
@CYCLEDAYS | nvarchar(max) | IN |
Definition
Copy
create procedure dbo.USP_REPORT_FACULTYSCHEDULELIST(
@RECORDQUERYID uniqueidentifier = null,
@RECORDID_SINGLE uniqueidentifier = null,
@SCHOOLID uniqueidentifier = null,
@ACADEMICYEARID uniqueidentifier = null,
@SESSIONID uniqueidentifier = null,
@TERMS nvarchar(max) = null,
@DISPLAYBY tinyint = null,
@INCLUDENOMEETINGS bit = null,
@PERIODS nvarchar(max) = null,
@CYCLEDAYS nvarchar(max) = null
)
as
declare @TERM_STARTDATE date
declare @TERM_ENDDATE date
declare @SESSION_STARTDATE date
declare @SESSION_ENDDATE date
select
@SESSION_STARTDATE = STARTDATE,
@SESSION_ENDDATE = ENDDATE
from
dbo.UFN_SESSION_GETDATES(@SESSIONID)
declare @SCHEDULETIMECODE as bit
select @SCHEDULETIMECODE = SCHEDULETIMECODE
from
dbo.TIMETABLE
inner join dbo.SESSION
on SESSION.TIMETABLEID = TIMETABLE.ID
where SESSION.ID = @SESSIONID
declare @FACULTYIDS table (ID uniqueidentifier)
-- single teacher, or all teachers; filter by session dates
if @RECORDQUERYID is null
insert into @FACULTYIDS
select
FACULTY.ID
from dbo.FACULTY
where (@RECORDID_SINGLE is null or FACULTY.ID = @RECORDID_SINGLE)
and exists
(select
FACULTYCOURSE.FACULTYID
from dbo.FACULTYCOURSE
join dbo.FACULTYCLASSMEETINGGROUP
on FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID = FACULTYCOURSE.ID
join dbo.CLASSMEETINGGROUP
on CLASSMEETINGGROUP.ID = FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID
join dbo.COURSE
on COURSE.ID = FACULTYCOURSE.COURSEID
where
FACULTYCOURSE.FACULTYID = FACULTY.ID and
COURSE.SCHOOLID = @SCHOOLID and
not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or
CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE)
)
else begin
if not exists(select ID from dbo.IDSETREGISTER where ID = @RECORDQUERYID)
raiserror('Selection ID set does not exist in the database.', 15, 1)
-- filter by selection and session dates
insert into @FACULTYIDS
select
FACULTY.ID
from FACULTY
inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@RECORDQUERYID) SELECTION
on SELECTION.ID = FACULTY.ID
where (@RECORDID_SINGLE is null or FACULTY.ID = @RECORDID_SINGLE)
and exists
(select
FACULTYCOURSE.FACULTYID
from dbo.FACULTYCOURSE
inner join dbo.FACULTYCLASSMEETINGGROUP
on FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID = FACULTYCOURSE.ID
inner join dbo.CLASSMEETINGGROUP
on CLASSMEETINGGROUP.ID = FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID
inner join dbo.COURSE
on COURSE.ID = FACULTYCOURSE.COURSEID
where
FACULTYCOURSE.FACULTYID = FACULTY.ID and
COURSE.SCHOOLID = @SCHOOLID and
not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or
CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE)
)
end
select
'http://www.blackbaud.com?FACULTYID=' + CONVERT(nvarchar(36), FACULTY.ID) as FACULTYID,
FACULTY.NAME as FACULTYNAME,
FACULTY.KEYNAME as FACULTY_KEYNAME,
CLASSMEETINGGROUP.ID,
'http://www.blackbaud.com?CLASSID=' + CONVERT(nvarchar(36), CLASSMEETINGGROUP.CLASSID) as CLASSID,
COURSE.[COURSEID] + ' - ' + CLASS.[SECTION] as NAME,
CLASS.[NAME] as CLASSNAME,
dbo.UFN_TERMNAMECODE_GETDESCRIPTION(TERM.TERMNAMECODEID) as TERM,
TERM.STARTDATE as TERM_STARTDATE,
dbo.UFN_ACADEMICYEAR_GETNAME(ACADEMICYEAR.ID) as ACADEMICYEAR,
dbo.UFN_SCHEDULELISTREPORT_GETFILTEREDTIMELIST(CLASSMEETINGGROUP.[ID], @PERIODS, @CYCLEDAYS) as MEETINGS,
@DISPLAYBY as DISPLAYBY
from dbo.CLASSMEETINGGROUP
inner join dbo.FACULTYCLASSMEETINGGROUP
on CLASSMEETINGGROUP.ID = FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID
inner join dbo.FACULTYCOURSE
on FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID = FACULTYCOURSE.ID
inner join dbo.CONSTITUENT FACULTY
on FACULTY.ID = FACULTYCOURSE.FACULTYID
inner join @FACULTYIDS FACULTYS
on FACULTYS.ID = FACULTY.ID
inner join dbo.CLASS
on CLASSMEETINGGROUP.CLASSID = CLASS.ID
inner join dbo.COURSE
on dbo.CLASS.COURSEID = dbo.COURSE.ID
inner join dbo.ACADEMICYEAR
on COURSE.SCHOOLID = ACADEMICYEAR.SCHOOLID
inner join dbo.SESSION
on ACADEMICYEAR.ID = SESSION.ACADEMICYEARID
inner join dbo.TERM
on SESSION.ID = TERM.SESSIONID
and TERM.STARTDATE = CLASSMEETINGGROUP.STARTDATE
and TERM.ENDDATE = CLASSMEETINGGROUP.ENDDATE
inner join dbo.UFN_PARSE_STRING(@TERMS,',') TERMS
on TERMS.ELEMENT_VALUE = TERM.ID
where
not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE) and
COURSE.PRINTONSCHEDULE = 1 and
(@INCLUDENOMEETINGS = 1 or
(@INCLUDENOMEETINGS = 0 and
(
(@SCHEDULETIMECODE = 0 and --filter by cycle day and period when timetable uses periods
exists (select CLASSMEETINGTEMPLATE.ID
from dbo.CLASSMEETINGTEMPLATE
inner join dbo.CYCLEDAY
on CLASSMEETINGTEMPLATE.CYCLEDAYID = CYCLEDAY.ID
inner join dbo.UFN_PARSE_STRING(@CYCLEDAYS,',') CYCLEDAYS
on CYCLEDAYS.ELEMENT_VALUE = CYCLEDAY.ID
left join dbo.TIMETABLEDAYPERIOD [STARTPERIOD]
on CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID = [STARTPERIOD].ID
inner join dbo.UFN_PARSE_STRING(@PERIODS,',') PERIODS_START
on PERIODS_START.ELEMENT_VALUE = [STARTPERIOD].PERIOD
left join dbo.TIMETABLEDAYPERIOD [ENDPERIOD]
on [STARTPERIOD].TIMETABLEDAYID = [ENDPERIOD].TIMETABLEDAYID
and CLASSMEETINGTEMPLATE.ENDTIME = [ENDPERIOD].ENDTIME
inner join dbo.UFN_PARSE_STRING(@PERIODS,',') PERIODS_END
on PERIODS_END.ELEMENT_VALUE = [ENDPERIOD].PERIOD
where CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID))
or
(@SCHEDULETIMECODE = 1 and --filter by cycle day only...not period when timetable uses time
exists (select CLASSMEETINGTEMPLATE.ID
from dbo.CLASSMEETINGTEMPLATE
inner join dbo.CYCLEDAY
on CLASSMEETINGTEMPLATE.CYCLEDAYID = CYCLEDAY.ID
inner join dbo.UFN_PARSE_STRING(@CYCLEDAYS,',') CYCLEDAYS
on CYCLEDAYS.ELEMENT_VALUE = CYCLEDAY.ID
where CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID))
))
)