USP_REPORT_CLASSROSTER
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CLASSQUERYID | uniqueidentifier | IN | |
@CLASSID | uniqueidentifier | IN | |
@SCHOOLID | uniqueidentifier | IN | |
@ACADEMICYEARID | uniqueidentifier | IN | |
@SESSIONID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_REPORT_CLASSROSTER(
@CLASSQUERYID uniqueidentifier = null,
@CLASSID uniqueidentifier = null,
@SCHOOLID uniqueidentifier = null,
@ACADEMICYEARID uniqueidentifier = null,
@SESSIONID uniqueidentifier = null
)
as
declare @SESSION_STARTDATE date
declare @SESSION_ENDDATE date
declare @AY_STARTDATE date
declare @AY_ENDDATE date
select
@AY_STARTDATE = STARTDATE,
@AY_ENDDATE = ENDDATE
from
dbo.ACADEMICYEAR
where ID = @ACADEMICYEARID
select
@SESSION_STARTDATE = STARTDATE,
@SESSION_ENDDATE = ENDDATE
from
dbo.UFN_SESSION_GETDATES(@SESSIONID)
declare @CLASSIDS table (ID uniqueidentifier)
-- single class, or all classes; filter by school and session dates
if @CLASSQUERYID is null
insert into @CLASSIDS
select CLASS.ID
from dbo.CLASSMEETINGGROUP
inner join dbo.CLASS
on CLASS.ID = CLASSMEETINGGROUP.CLASSID and CLASS.STARTDATE = CLASSMEETINGGROUP.STARTDATE
inner join dbo.COURSE
on COURSE.ID = CLASS.COURSEID
where COURSE.SCHOOLID = @SCHOOLID
and not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE)
and (@CLASSID is null or CLASS.ID = @CLASSID)
else begin
if not exists(select ID from dbo.IDSETREGISTER where ID = @CLASSQUERYID)
raiserror('Selection ID set does not exist in the database.', 15, 1);
-- filter by selection, school and session dates
insert into @CLASSIDS (ID)
select
CLASS.ID
from
dbo.CLASSMEETINGGROUP
inner join dbo.CLASS
on CLASS.ID = CLASSMEETINGGROUP.CLASSID and CLASS.STARTDATE = CLASSMEETINGGROUP.STARTDATE
inner join dbo.UFN_IDSETREADER_GETRESULTS_GUID(@CLASSQUERYID) SELECTION
on SELECTION.ID = CLASS.ID
inner join dbo.COURSE
on COURSE.ID = CLASS.COURSEID
where COURSE.SCHOOLID = @SCHOOLID
and not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE)
end
select distinct
CLASS.ID,
'http://www.blackbaud.com?CLASSRECORDID=' + CONVERT(nvarchar(36), CLASS.ID) as CLASSRECORDID,
dbo.UFN_CLASS_GETNAME(CLASS.ID) as CLASSID,
CLASS.NAME as CLASSNAME,
(select TERMNAMECODE.DESCRIPTION
from dbo.TERM
inner join dbo.TERMNAMECODE
on TERM.TERMNAMECODEID = TERMNAMECODE.ID
where TERM.SESSIONID = @SESSIONID
and TERM.STARTDATE = CLASS.STARTDATE) as STARTTERM,
case when PATTERNBLOCKID is null
then dbo.UFN_CLASSMEETINGTEMPLATE_GETTIMELIST_FROMCLASSMEETINGGROUP(STUDENT_CLASS.CLASSMEETINGGROUPID)
else PATTERNBLOCK.NAME + ' (' + dbo.UFN_CLASSMEETINGTEMPLATE_GETTIMELIST_FROMCLASSMEETINGGROUP(STUDENT_CLASS.CLASSMEETINGGROUPID) + ')'
end as MEETINGS,
'http://www.blackbaud.com?STUDENTID=' + CONVERT(nvarchar(36), STUDENT.ID) as STUDENTID,
STUDENT.KEYNAME,
STUDENT.FIRSTNAME,
STUDENT.NAME as STUDENTNAME,
STUDENT.NICKNAME,
STUDENT.GENDER,
(select stuff((select '; ' + CONSTITUENT.NAME
from dbo.CONSTITUENT
where CONSTITUENT.ID = FACULTYCOURSE.FACULTYID
order by CONSTITUENT.NAME
for xml path(''), type).value('.', 'nvarchar(max)'), 1, 2, '')) as FACULTY,
(select stuff((select '; ' + GRADELEVEL.ABBREVIATION
from dbo.SCHOOLGRADELEVEL
join dbo.GRADELEVEL on GRADELEVEL.ID = SCHOOLGRADELEVEL.GRADELEVELID
where SCHOOLGRADELEVEL.ID = STUDENTPROGRESSION.SCHOOLGRADELEVELID
order by GRADELEVEL.SEQUENCE
for xml path(''), type).value('.', 'nvarchar(max)'), 1, 2, '')) as GRADELEVEL,
(select stuff((select '; ' + CONSTITUENT.NAME
from dbo.CONSTITUENT
where CONSTITUENT.ID = STUDENTADVISOR.FACULTYID
order by CONSTITUENT.NAME
for xml path(''), type).value('.', 'nvarchar(max)'), 1, 2, '')) as ADVISOR,
dbo.UFN_CLASS_GETNUMBERENROLLED(CLASSID) as NUMENROLLED,
dbo.UFN_CLASS_GETSTUDENTCOUNTBYGENDER(CLASS.ID, 1) as NUMMALE,
dbo.UFN_CLASS_GETSTUDENTCOUNTBYGENDER(CLASS.ID, 2) as NUMFEMALE,
dbo.UFN_CLASS_GETSTUDENTTERMSTRING(CLASS.ID, STUDENTCOURSEID) as TERMS,
case when STATUSCODE <> 0 then STATUS else '' end as STATUS
from
@CLASSIDS CLASSES
inner join dbo.UFN_STUDENT_CLASS(null) as STUDENT_CLASS
on STUDENT_CLASS.CLASSID = CLASSES.ID and STUDENT_CLASS.SESSIONID = @SESSIONID
inner join dbo.CLASS
on CLASS.ID = STUDENT_CLASS.CLASSID
left join dbo.PATTERNBLOCK
on PATTERNBLOCK.ID = STUDENT_CLASS.PATTERNBLOCKID
left join dbo.FACULTYCLASSMEETINGGROUP
on FACULTYCLASSMEETINGGROUP.CLASSMEETINGGROUPID = STUDENT_CLASS.CLASSMEETINGGROUPID
left join dbo.FACULTYCOURSE
on FACULTYCOURSE.ID = FACULTYCLASSMEETINGGROUP.FACULTYCOURSEID
inner join dbo.STUDENTCOURSE
on STUDENTCOURSE.ID = STUDENT_CLASS.STUDENTCOURSEID
inner join dbo.CONSTITUENT as STUDENT
on STUDENT.ID = STUDENTCOURSE.STUDENTID
inner join dbo.EDUCATIONALHISTORY
on EDUCATIONALHISTORY.CONSTITUENTID = STUDENT.ID
inner join dbo.STUDENTPROGRESSION
on STUDENTPROGRESSION.ENROLLMENTID = EDUCATIONALHISTORY.ID
left join dbo.STUDENTADVISOR
on STUDENTPROGRESSION.ID = STUDENTADVISOR.STUDENTPROGRESSIONID
left join dbo.CONSTITUENT as ADVISOR
on STUDENTADVISOR.FACULTYID = ADVISOR.ID
where
not (STUDENTPROGRESSION.ENDDATE < @AY_STARTDATE or STUDENTPROGRESSION.STARTDATE > @AY_ENDDATE)
order by
CLASS.ID,
STUDENT.KEYNAME,
STUDENT.FIRSTNAME