USP_DATAFORMTEMPLATE_EDIT_COURSERESTRICTION
The save procedure used by the edit dataform template "Course Restriction Edit Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@LENGTHINTERMS | int | IN | Terms in length |
@STARTTERMS | xml | IN | Starting in terms |
@PATTERNID | uniqueidentifier | IN | Pattern |
@COURSEGRADINGID | uniqueidentifier | IN | |
@COURSEGRADINGMARKINGCOLUMNS | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_COURSERESTRICTION (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@LENGTHINTERMS int,
@STARTTERMS xml,
@PATTERNID uniqueidentifier,
@COURSEGRADINGID uniqueidentifier,
@COURSEGRADINGMARKINGCOLUMNS xml
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
-- Determine if the user is attempting to remove a start term which is currently in use
if exists(
select 1
from dbo.COURSERESTRICTIONSTARTTERM
left join
(
select
T.c.value('(ID)[1]','uniqueidentifier') as ID,
T.c.value('(STARTDATE)[1]','date') as STARTDATE,
T.c.value('(ENDDATE)[1]','date') as ENDDATE
from @STARTTERMS.nodes('/STARTTERMS/ITEM') as T(c)
) STARTTERMS on
COURSERESTRICTIONSTARTTERM.ID = STARTTERMS.ID
inner join dbo.COURSERESTRICTION on
COURSERESTRICTIONSTARTTERM.COURSERESTRICTIONID = COURSERESTRICTION.ID
inner join dbo.CLASS on
COURSERESTRICTION.COURSEID = CLASS.COURSEID and
COURSERESTRICTIONSTARTTERM.STARTDATE = CLASS.STARTDATE
where STARTTERMS.ID is null and
COURSERESTRICTION.ID = @ID
)
begin
raiserror('BBERR_COURSERESTRICTION_DELETE_CHECKFORCLASSES', 13, 1);
end
-- handle updating the data
update dbo.COURSERESTRICTION set
LENGTHINTERMS = @LENGTHINTERMS,
PATTERNID = @PATTERNID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
exec dbo.USP_COURSERESTRICTION_GETSTARTTERMS_UPDATEFROMXML @ID, @STARTTERMS, @CHANGEAGENTID, @CURRENTDATE;
-- validate LENGTHINTERMS vs. selected STARTTERMS; these can be edited at either parent or child level, so validating here after both have been saved
if dbo.UFN_COURSERESTRICTION_LENGTHINTERMS_VALID(@ID, @LENGTHINTERMS) = 0
raiserror('CK_COURSERESTRICTION_LENGTHINTERMS_VALID', 13, 1)
if @COURSEGRADINGID is not null
begin
declare @COURSEID uniqueidentifier, @SESSIONSTARTDATE date, @SESSIONENDDATE date
select @COURSEID = COURSEID, @SESSIONSTARTDATE = STARTDATE, @SESSIONENDDATE = ENDDATE from dbo.COURSERESTRICTION where ID = @ID
exec dbo.USP_COURSEGRADING_GETMARKINGCOLUMNS_UPDATEFROMXML @COURSEGRADINGID, @COURSEID, @SESSIONSTARTDATE, @SESSIONENDDATE, @COURSEGRADINGMARKINGCOLUMNS, @CHANGEAGENTID, @CURRENTDATE;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;