USP_DATAFORMTEMPLATE_EDIT_CLASSCATEGORY
The save procedure used by the edit dataform template "Class Category 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. |
@USECATEGORYPERCENTAGES | bit | IN | This class is graded using category percentages |
@CATEGORIES | xml | IN | Categories |
@OTHERCLASSES | xml | IN | Copy this setup to |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_CLASSCATEGORY (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@USECATEGORYPERCENTAGES bit,
@CATEGORIES xml,
@OTHERCLASSES xml
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
begin try
-- handle updating the data
update dbo.CLASS set
USECATEGORYPERCENTAGES = @USECATEGORYPERCENTAGES,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @ID
exec dbo.USP_CLASSCATEGORY_EDIT @ID, @CHANGEAGENTID, @CATEGORIES
declare @CLASSES table
(
ID uniqueidentifier not null
)
insert into @CLASSES
(
ID
)
select
T.c.value('(ID)[1]','uniqueidentifier')
from
@OTHERCLASSES.nodes('/OTHERCLASSES/ITEM') T(c)
where
T.c.value('(COPY)[1]','bit') = 1
and T.c.value('(ID)[1]','uniqueidentifier') is not null
if exists(select CLASSCATEGORY.ID
from dbo.CLASSCATEGORY
inner join @CLASSES CL on CLASSCATEGORY.CLASSID = CL.ID)
raiserror('BBERR_CLASSCATEGORY_CATEGORIESDEFINEDFOROTHERCLASSES', 13,1)
update
dbo.CLASS
set
USECATEGORYPERCENTAGES = @USECATEGORYPERCENTAGES,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
from
dbo.CLASS
inner join @CLASSES CL on CLASS.ID = CL.ID
insert into dbo.CLASSCATEGORY
(
ID,
CLASSID,
NAME,
DEFAULTNAME,
ISGRADED,
GRADINGSCALEID,
MAXPOINTS,
AVERAGINGMETHODCODE,
TOTALGRADEPERCENTAGE,
ADDEDBYID,
DATEADDED,
CHANGEDBYID,
DATECHANGED
)
select
newid(),
CL.ID,
NAME,
DEFAULTNAME,
ISGRADED,
GRADINGSCALEID,
MAXPOINTS,
AVERAGINGMETHODCODE,
TOTALGRADEPERCENTAGE,
@CHANGEAGENTID,
@CURRENTDATE,
@CHANGEAGENTID,
@CURRENTDATE
from
dbo.CLASSCATEGORY
cross join @CLASSES CL
where
CLASSCATEGORY.CLASSID = @ID
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;