USP_ADDREQUESTSFORMULTIPLESTUDENTS_BULKPROCESS
Back-end logic for the globally add requests business process.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@IDSETREGISTERID | uniqueidentifier | IN | |
@SCHOOLID | uniqueidentifier | IN | |
@ACADEMICYEARID | uniqueidentifier | IN | |
@SESSIONNAMECODEID | uniqueidentifier | IN | |
@CORECURRICULA | xml | IN | |
@COURSES | xml | IN | |
@SUCCESSTABLE | nvarchar(128) | IN | |
@EXCEPTIONTABLE | nvarchar(128) | IN | |
@SUCCESSCOUNT | int | INOUT | |
@EXCEPTIONCOUNT | int | INOUT | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
CREATE procedure dbo.USP_ADDREQUESTSFORMULTIPLESTUDENTS_BULKPROCESS(
@IDSETREGISTERID uniqueidentifier,
@SCHOOLID uniqueidentifier,
@ACADEMICYEARID uniqueidentifier,
@SESSIONNAMECODEID uniqueidentifier,
@CORECURRICULA xml,
@COURSES xml,
@SUCCESSTABLE nvarchar(128),
@EXCEPTIONTABLE nvarchar(128),
@SUCCESSCOUNT int = 0 output,
@EXCEPTIONCOUNT int = 0 output,
@CHANGEAGENTID uniqueidentifier = null,
@CHANGEDATE datetime = null
)
as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
if @CHANGEDATE is null
set @CHANGEDATE = getdate()
declare @SESSIONID uniqueidentifier
declare @STARTDATE date
declare @ENDDATE date
if @ACADEMICYEARID = '00000000-0000-0000-0000-000000000001'
set @ACADEMICYEARID = dbo.UFN_ACADEMICYEAR_GETCURRENT(getdate(), @SCHOOLID)
if @ACADEMICYEARID = '00000000-0000-0000-0000-000000000002'
set @ACADEMICYEARID = dbo.UFN_ACADEMICYEAR_GETNEXT(getdate(), @SCHOOLID)
select @SESSIONID = SESSION.ID
from dbo.SESSION
where ACADEMICYEARID = @ACADEMICYEARID and SESSIONNAMECODEID = @SESSIONNAMECODEID
select @STARTDATE = MIN(STARTDATE), @ENDDATE = MAX(ENDDATE)
from dbo.SESSION
inner join dbo.TERM on SESSION.ID = TERM.SESSIONID
where SESSION.ID = @SESSIONID
declare @STUDENT table (STUDENTID uniqueidentifier not null, STUDENT_NAME nvarchar(154) null, SCHOOLID uniqueidentifier null, SCHOOLGRADELEVELID uniqueidentifier null)
--limit to selection, if chosen
if (@IDSETREGISTERID is null) or (@IDSETREGISTERID = '00000000-0000-0000-0000-000000000000')
insert into @STUDENT (STUDENTID)
select ID from dbo.STUDENT
else
insert into @STUDENT (STUDENTID)
select ID from dbo.UFN_IDSETREADER_GETRESULTS_GUID(@IDSETREGISTERID)
--limit to those students with SPE's for the chosen academic year
update STUDENT set SCHOOLID = SCHOOLGRADELEVEL.SCHOOLID, STUDENT_NAME = CONSTITUENT.NAME, SCHOOLGRADELEVELID = STUDENTPROGRESSION.SCHOOLGRADELEVELID
from @STUDENT as STUDENT
inner join dbo.CONSTITUENT on STUDENT.STUDENTID = CONSTITUENT.ID
inner join dbo.EDUCATIONALHISTORY on CONSTITUENT.ID = EDUCATIONALHISTORY.CONSTITUENTID
inner join dbo.STUDENTPROGRESSION on EDUCATIONALHISTORY.ID = STUDENTPROGRESSION.ENROLLMENTID
inner join dbo.SCHOOLGRADELEVEL on SCHOOLGRADELEVEL.ID = STUDENTPROGRESSION.SCHOOLGRADELEVELID
where dbo.UFN_ACADEMICYEAR_GET_FORSCHOOL_BYDATE(SCHOOLGRADELEVEL.SCHOOLID, STUDENTPROGRESSION.STARTDATE, STUDENTPROGRESSION.ENDDATE) = @ACADEMICYEARID
delete from @STUDENT where SCHOOLGRADELEVELID is null
declare @CORECOURSES table (CORECURRICULUMCOURSEID uniqueidentifier not null, SCHOOLID uniqueidentifier not null, SCHOOLGRADELEVELID uniqueidentifier null, TERMNAMECODEID uniqueidentifier null, STARTDATE date null, STARTTERMID uniqueidentifier null)
--get courses to add requests for
if @CORECURRICULA is null
insert into @CORECOURSES (CORECURRICULUMCOURSEID, TERMNAMECODEID, SCHOOLID, SCHOOLGRADELEVELID)
select CORECURRICULUMCOURSE.ID, COURSES.TERMNAMECODEID, CORECURRICULUM.SCHOOLID, CORECURRICULUM.SCHOOLGRADELEVELID
from dbo.CORECURRICULUMCOURSE
left outer join dbo.UFN_ADDREQUESTSFORMULTIPLESTUDENTS_GETCOURSES_FROMITEMLISTXML(@COURSES) as COURSES on CORECURRICULUMCOURSE.ID = COURSES.CORECURRICULUMCOURSEID
inner join dbo.CORECURRICULUM on CORECURRICULUMCOURSE.CORECURRICULUMID = CORECURRICULUM.ID
else
insert into @CORECOURSES (CORECURRICULUMCOURSEID, TERMNAMECODEID, SCHOOLID, SCHOOLGRADELEVELID)
select CORECURRICULUMCOURSE.ID, COURSES.TERMNAMECODEID, CORECURRICULUM.SCHOOLID, CORECURRICULUM.SCHOOLGRADELEVELID
from dbo.CORECURRICULUMCOURSE
inner join dbo.UFN_ADDREQUESTSFORMULTIPLESTUDENTS_GETCORE_FROMITEMLISTXML(@CORECURRICULA) as CORE on CORECURRICULUMCOURSE.CORECURRICULUMID = CORE.CORECURRICULUMID
left outer join dbo.UFN_ADDREQUESTSFORMULTIPLESTUDENTS_GETCOURSES_FROMITEMLISTXML(@COURSES) as COURSES on CORECURRICULUMCOURSE.ID = COURSES.CORECURRICULUMCOURSEID
inner join dbo.CORECURRICULUM on CORECURRICULUMCOURSE.CORECURRICULUMID = CORECURRICULUM.ID
update CC set STARTDATE = TERM.STARTDATE, STARTTERMID = TERM.ID
from @CORECOURSES CC
inner join dbo.TERM on CC.TERMNAMECODEID = TERM.TERMNAMECODEID
where TERM.SESSIONID = @SESSIONID
--create requests
create table #STUDENTREQUESTINFO (ID uniqueidentifier, STUDENTID uniqueidentifier not null, STUDENT_NAME nvarchar(154) collate DATABASE_DEFAULT not null, COURSEID uniqueidentifier not null, SCHOOL_NAME nvarchar(154) collate DATABASE_DEFAULT not null, SCHOOLGRADELEVEL nvarchar(10) collate DATABASE_DEFAULT not null , SCHOOLGRADELEVELSEQUENCE int not null, CLASSSTARTDATE date not null, EXCEPTION nvarchar(20) collate DATABASE_DEFAULT, COURSEINFO nvarchar(1000) collate DATABASE_DEFAULT, COURSE_NAME nvarchar(72) collate DATABASE_DEFAULT)
insert into #STUDENTREQUESTINFO (ID, STUDENTID, STUDENT_NAME, COURSEID, SCHOOL_NAME, SCHOOLGRADELEVEL, SCHOOLGRADELEVELSEQUENCE, CLASSSTARTDATE, EXCEPTION)
select
NEWID(),
STUDENT.STUDENTID,
STUDENT.STUDENT_NAME,
CORECURRICULUMCOURSE.COURSEID,
dbo.UFN_SCHOOL_GETNAME(STUDENT.SCHOOLID) as SCHOOL_NAME,
dbo.UFN_SCHOOLGRADELEVEL_GETNAME(STUDENT.SCHOOLGRADELEVELID) as SCHOOLGRADELEVEL,
(select
SEQUENCE
from dbo.SCHOOLGRADELEVEL
inner join dbo.GRADELEVEL
on SCHOOLGRADELEVEL.GRADELEVELID = GRADELEVEL.ID
where SCHOOLGRADELEVEL.ID = STUDENT.SCHOOLGRADELEVELID) as SCHOOLGRADELEVELSEQUENCE,
CC.STARTDATE,
EXCEPTION.EXCEPTION
from @STUDENT as STUDENT
cross join @CORECOURSES CC
inner join dbo.CORECURRICULUMCOURSE
on CC.CORECURRICULUMCOURSEID = CORECURRICULUMCOURSE.ID
outer apply dbo.UFN_STUDENTCOURSEREQUEST_GETEXCEPTIONTABLE(STUDENT.STUDENTID,CORECURRICULUMCOURSE.COURSEID,@SESSIONID,CC.STARTTERMID) as EXCEPTION
where CC.STARTDATE is not null
and ((STUDENT.SCHOOLGRADELEVELID = CC.SCHOOLGRADELEVELID) or (STUDENT.SCHOOLID = CC.SCHOOLID and CC.SCHOOLGRADELEVELID is null))
insert into dbo.STUDENTCOURSE (ID, STUDENTID, COURSEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
ID, STUDENTID, COURSEID, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
from #STUDENTREQUESTINFO
where EXCEPTION is null
insert into dbo.STUDENTCOURSEREQUEST (ID, STARTDATE, ENDDATE, CLASSSTARTDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
ID, @STARTDATE, @ENDDATE, CLASSSTARTDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
from #STUDENTREQUESTINFO
where EXCEPTION is null
declare @LOGSUCCESSSQL nvarchar(400)
declare @LOGEXCEPTIONSQL nvarchar(1200)
set @LOGSUCCESSSQL = N'insert into dbo.' + @SUCCESSTABLE + N' (STUDENTID, STUDENT_NAME, SCHOOLGRADELEVEL, SCHOOLGRADELEVELSEQUENCE) select STUDENTID, STUDENT_NAME, SCHOOLGRADELEVEL, SCHOOLGRADELEVELSEQUENCE from #STUDENTREQUESTINFO where EXCEPTION is null'
exec sp_executesql @LOGSUCCESSSQL
select @SUCCESSCOUNT = COUNT(distinct STUDENTID) from #STUDENTREQUESTINFO where EXCEPTION is null
update #STUDENTREQUESTINFO set COURSE_NAME = (select COURSE.NAME + ' - ' + COURSE.COURSEID from dbo.COURSE where ID = #STUDENTREQUESTINFO.COURSEID),
COURSEINFO = case
when EXCEPTION = 'GENDER' then
(select GENDER from dbo.COURSE where ID = #STUDENTREQUESTINFO.COURSEID)
when EXCEPTION = 'SCHOOL' then
dbo.UFN_SCHOOL_GETNAME(dbo.UFN_COURSE_GETSCHOOLID(#STUDENTREQUESTINFO.COURSEID))
when EXCEPTION = 'GRADE_LEVEL' then
dbo.UFN_COURSE_GETGRADELEVELSTRING(#STUDENTREQUESTINFO.COURSEID) else '' end
where EXCEPTION is not null
set @LOGEXCEPTIONSQL = N'insert into dbo.' + @EXCEPTIONTABLE + N' (STUDENTID, STUDENT_NAME, COURSEID, COURSE_NAME, SCHOOL_NAME, SCHOOLGRADELEVEL, SCHOOLGRADELEVELSEQUENCE, ERRORMESSAGE, COURSEINFO)
select
STUDENTID,
STUDENT_NAME,
COURSEID,
COURSE_NAME,
SCHOOL_NAME,
SCHOOLGRADELEVEL,
SCHOOLGRADELEVELSEQUENCE,
EXCEPTION,
COURSEINFO
from #STUDENTREQUESTINFO where EXCEPTION is not null'
exec sp_executesql @LOGEXCEPTIONSQL
select @EXCEPTIONCOUNT = COUNT(distinct STUDENTID) from #STUDENTREQUESTINFO where EXCEPTION is not null
end