USP_DATAFORMTEMPLATE_VIEW_CLEARSTUDENTSCHEDULES_STUDENTS
The load procedure used by the view dataform template "Clear Student Schedules Student View Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@STUDENTS | xml | INOUT | STUDENTS |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CLEARSTUDENTSCHEDULES_STUDENTS
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@DATALOADED bit = 0 output,
@STUDENTS xml = null output
)
as
set nocount on;
if @ID = '00000000-0000-0000-0000-000000000000'
set @ID = null
declare @SESSION_STARTDATE date
declare @SESSION_ENDDATE date
declare @SESSIONID uniqueidentifier
declare @SCHOOLID uniqueidentifier
select
@DATALOADED = 1,
@SESSION_STARTDATE = min(TERM.STARTDATE),
@SESSION_ENDDATE = max(TERM.ENDDATE),
@SESSIONID = SESSION.ID,
@SCHOOLID = ACADEMICYEAR.SCHOOLID
from dbo.TERM
inner join dbo.APPUSERSESSION on TERM.SESSIONID = APPUSERSESSION.SESSIONID
inner join dbo.SESSION on APPUSERSESSION.SESSIONID = SESSION.ID
inner join dbo.ACADEMICYEAR on SESSION.ACADEMICYEARID = ACADEMICYEAR.ID
where APPUSERSESSION.ID = @CURRENTAPPUSERID
group by APPUSERSESSION.ID, SESSION.ID, ACADEMICYEAR.SCHOOLID;
-- Due to SQL performance quirks, moved the processing of the selection into a temp table to create a better execution plan.
declare @STUDENTLIST table ([ID] uniqueidentifier)
if @ID is not null
insert into @STUDENTLIST
select ID
from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@ID);
with ENROLLMENT_CTE (STUDENTID, STUDENTNAME, STUDENTLASTNAME, GRADELEVEL, HOMEROOMTEACHER, GENDER)
as
(
select
EDUCATIONALHISTORY.CONSTITUENTID as STUDENTID,
CONSTITUENT.NAME + case when LEN(CONSTITUENT.NICKNAME) > 0
then ' (' + CONSTITUENT.NICKNAME + ')'
else ''
end as STUDENTNAME,
CONSTITUENT.KEYNAME as STUDENTLASTNAME,
GRADELEVEL.DESCRIPTION as GRADELEVEL,
HOMEROOMTEACHER.NAME as HOMEROOMTEACHER,
CONSTITUENT.GENDER
from dbo.CONSTITUENT
inner join dbo.EDUCATIONALHISTORY on CONSTITUENT.ID = EDUCATIONALHISTORY.CONSTITUENTID
inner join dbo.STUDENTPROGRESSION on EDUCATIONALHISTORY.ID = STUDENTPROGRESSION.ENROLLMENTID
left join dbo.CONSTITUENT HOMEROOMTEACHER on STUDENTPROGRESSION.HOMEROOMTEACHERID = HOMEROOMTEACHER.ID
inner join dbo.SCHOOLGRADELEVEL on STUDENTPROGRESSION.SCHOOLGRADELEVELID = SCHOOLGRADELEVEL.ID
inner join dbo.GRADELEVEL on SCHOOLGRADELEVEL.GRADELEVELID = GRADELEVEL.ID
inner join dbo.STUDENTCOURSE on EDUCATIONALHISTORY.CONSTITUENTID = STUDENTCOURSE.STUDENTID
inner join dbo.STUDENTCLASSMEETINGGROUP on STUDENTCOURSE.ID = STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID
and STUDENTCLASSMEETINGGROUP.STATUSCODE in (0, 3)
inner join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
and not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE)
where SCHOOLGRADELEVEL.SCHOOLID = @SCHOOLID
and not (STUDENTPROGRESSION.ENDDATE < @SESSION_STARTDATE or STUDENTPROGRESSION.STARTDATE > @SESSION_ENDDATE)
and not exists (
select STUDENTMARKINGCOLUMNGRADE.ID
from dbo.STUDENTCOURSE
inner join dbo.STUDENTCLASSMEETINGGROUP on STUDENTCOURSE.ID = STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID
inner join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
and not (CLASSMEETINGGROUP.ENDDATE < @SESSION_STARTDATE or CLASSMEETINGGROUP.STARTDATE > @SESSION_ENDDATE)
inner join dbo.STUDENTMARKINGCOLUMNGRADE on STUDENTCLASSMEETINGGROUP.ID = STUDENTMARKINGCOLUMNGRADE.STUDENTCLASSMEETINGGROUPID
where STUDENTCOURSE.STUDENTID = CONSTITUENT.ID
)
and (@ID is null or STUDENTCOURSE.STUDENTID in (
select ID
from @STUDENTLIST
)
)
)
select @STUDENTS =
(select
T.STUDENTID as ID,
1 as CLEAR,
T.STUDENTNAME as NAME,
(select stuff(
(select ', ' + LOCAL_CTE.GRADELEVEL
from ENROLLMENT_CTE LOCAL_CTE
where LOCAL_CTE.STUDENTID = T.STUDENTID
group by GRADELEVEL
order by LOCAL_CTE.GRADELEVEL
for xml path('')),
1, 2, '')) as GRADELEVEL,
(select stuff(
(select ', ' + LOCAL_CTE.HOMEROOMTEACHER
from ENROLLMENT_CTE LOCAL_CTE
where LOCAL_CTE.STUDENTID = T.STUDENTID
group by HOMEROOMTEACHER
order by LOCAL_CTE.HOMEROOMTEACHER
for xml path('')),
1, 2, '')) as HOMEROOMTEACHER,
T.GENDER
from (
select
STUDENTID,
STUDENTNAME,
STUDENTLASTNAME,
GENDER,
ROW_NUMBER() over (partition by STUDENTID order by STUDENTNAME) as ROW
from
ENROLLMENT_CTE
) T
where T.ROW = 1
order by T.STUDENTLASTNAME
for xml raw('ITEM'),type,elements,root('STUDENTS'),binary base64)
return 0;