USP_DATAFORMTEMPLATE_ADD_STUDENTSKILLLOADCATEGORIES
The save procedure used by the add dataform template "Student Skill Load Categories Add Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@COURSEID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@SELECTEDSKILLCATEGORIES | xml | IN | Selected skill categories |
@AVAILABLESKILLCATEGORIES | xml | IN | Available skill categories |
@STUDENTSKILLCOURSEMARKINGCOLUMNS | xml | IN | Marking Columns |
@STARTINACADEMICYEARNAMECODEID | uniqueidentifier | IN | Start in |
@STOPAFTERACADEMICYEARNAMECODEID | uniqueidentifier | IN | Stop after |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_STUDENTSKILLLOADCATEGORIES
(
@ID uniqueidentifier = null output,
@COURSEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@SELECTEDSKILLCATEGORIES xml,
@AVAILABLESKILLCATEGORIES xml = null,
@STUDENTSKILLCOURSEMARKINGCOLUMNS xml,
@STARTINACADEMICYEARNAMECODEID uniqueidentifier,
@STOPAFTERACADEMICYEARNAMECODEID uniqueidentifier = null
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @MAXSEQUENCE integer
set @MAXSEQUENCE = (select coalesce(max(SSC.SEQUENCE), -1) from dbo.STUDENTSKILLCOURSE SSC where SSC.COURSEID=@COURSEID)
declare @TEMPSKILLCOURSES table(
ID uniqueidentifier,
STUDENTSKILLID uniqueidentifier,
SEQUENCE integer primary key identity)
insert into @TEMPSKILLCOURSES
select newid(), STUDENTSKILL.ID
FROM dbo.STUDENTSKILL where STUDENTSKILLCATEGORYCODEID in
(
(SELECT
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID'
FROM @SELECTEDSKILLCATEGORIES.nodes('/SELECTEDSKILLCATEGORIES/ITEM') T(c))
)
order by STUDENTSKILL.DATEADDED
--Get the dates
declare @STARTDATE datetime = null, @ENDDATE datetime = null
if @STARTINACADEMICYEARNAMECODEID is not null
select @STARTDATE = ACADEMICYEAR.STARTDATE from dbo.ACADEMICYEAR
inner join dbo.COURSE on ACADEMICYEAR.SCHOOLID = COURSE.SCHOOLID
where ACADEMICYEAR.ACADEMICYEARNAMECODEID = @STARTINACADEMICYEARNAMECODEID and
COURSE.ID = @COURSEID
if @STOPAFTERACADEMICYEARNAMECODEID is not null
select @ENDDATE = ACADEMICYEAR.ENDDATE from dbo.ACADEMICYEAR
inner join dbo.COURSE on ACADEMICYEAR.SCHOOLID = COURSE.SCHOOLID
where ACADEMICYEAR.ACADEMICYEARNAMECODEID = @STOPAFTERACADEMICYEARNAMECODEID and
COURSE.ID = @COURSEID
if (@STARTDATE is null)
raiserror('BBERR_STUDENTSKILLCOURSE_STARTDATE_ACADEMICYEARNOTAVAILABLE', 13, 1)
if ((@ENDDATE is null) and (@STOPAFTERACADEMICYEARNAMECODEID is not null))
raiserror('BBERR_STUDENTSKILLCOURSE_ENDDATE_ACADEMICYEARNOTAVAILABLE', 13, 1)
--add new records
insert into dbo.STUDENTSKILLCOURSE
(ID, COURSEID, STUDENTSKILLID, STARTDATE, ENDDATE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED,
SEQUENCE)
select ID, @COURSEID, STUDENTSKILLID, @STARTDATE, @ENDDATE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE,
@MAXSEQUENCE + TEMP.SEQUENCE
From @TEMPSKILLCOURSES TEMP
where not exists (Select ID from dbo.STUDENTSKILLCOURSE SSC where SSC.COURSEID = @COURSEID and SSC.STUDENTSKILLID = TEMP.STUDENTSKILLID)
--update end date where it is blank on existing matching records
update STUDENTSKILLCOURSE set ENDDATE = @ENDDATE
from dbo.STUDENTSKILLCOURSE
inner join @TEMPSKILLCOURSES TEMP on
TEMP.STUDENTSKILLID = STUDENTSKILLCOURSE.STUDENTSKILLID and
STUDENTSKILLCOURSE.COURSEID = @COURSEID and
STUDENTSKILLCOURSE.ENDDATE is null
declare @TEMPSKILLCOURSESMC table(
ID uniqueidentifier,
SKILLCOURSEID uniqueidentifier,
MCID uniqueidentifier)
insert into @TEMPSKILLCOURSESMC
select
newid(),
SC.ID,
c.value('MARKINGCOLUMNDESCRIPTIONCODEID[1]', 'uniqueidentifier')
from dbo.STUDENTSKILLCOURSE SC
cross join @STUDENTSKILLCOURSEMARKINGCOLUMNS.nodes('/STUDENTSKILLCOURSEMARKINGCOLUMNS/ITEM') as T(c)
where SC.COURSEID = @COURSEID and SC.STUDENTSKILLID in (select STUDENTSKILLID from @TEMPSKILLCOURSES)
--add new Marking Column records
insert into dbo.STUDENTSKILLCOURSEMARKINGCOLUMN
(ID, STUDENTSKILLCOURSEID, MARKINGCOLUMNDESCRIPTIONCODEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
select
TEMP.ID,
TEMP.SKILLCOURSEID,
TEMP.MCID,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
from @TEMPSKILLCOURSESMC TEMP
where not exists (Select ID from dbo.STUDENTSKILLCOURSEMARKINGCOLUMN SSCMC
where SSCMC.STUDENTSKILLCOURSEID = TEMP.SKILLCOURSEID and
SSCMC.MARKINGCOLUMNDESCRIPTIONCODEID = TEMP.MCID)