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;