USP_DATAFORMTEMPLATE_SAVE_COURSESTUDENTSKILL

The save procedure used by the edit dataform template "Course Student Skill 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.
@NAME nvarchar(400) IN Name
@STUDENTSKILLCATEGORYCODEID uniqueidentifier IN Category
@STUDENTSKILLRATINGGROUPID uniqueidentifier IN Ratings table
@STARTINACADEMICYEARNAMECODEID uniqueidentifier IN Start in
@STOPAFTERACADEMICYEARNAMECODEID uniqueidentifier IN Stop after
@STUDENTSKILLCOURSEMARKINGCOLUMNS xml IN Marking Columns

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_SAVE_COURSESTUDENTSKILL (
    @ID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @NAME nvarchar(400),
    @STUDENTSKILLCATEGORYCODEID uniqueidentifier,
    @STUDENTSKILLRATINGGROUPID uniqueidentifier,    
    @STARTINACADEMICYEARNAMECODEID uniqueidentifier,
    @STOPAFTERACADEMICYEARNAMECODEID uniqueidentifier,
    @STUDENTSKILLCOURSEMARKINGCOLUMNS xml
)
as

    set nocount on;

    if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        declare @STUDENTSKILLID uniqueidentifier
        select @STUDENTSKILLID = STUDENTSKILLID from dbo.STUDENTSKILLCOURSE where ID = @ID

        -- update the shared skill

        update dbo.STUDENTSKILL set
            NAME = @NAME
            STUDENTSKILLCATEGORYCODEID = @STUDENTSKILLCATEGORYCODEID,
            STUDENTSKILLRATINGGROUPID = @STUDENTSKILLRATINGGROUPID,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = getdate()
        where ID = @STUDENTSKILLID

        --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 = (select STUDENTSKILLCOURSE.COURSEID from dbo.STUDENTSKILLCOURSE where STUDENTSKILLCOURSE.ID = @ID)

        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 = (select STUDENTSKILLCOURSE.COURSEID from dbo.STUDENTSKILLCOURSE where STUDENTSKILLCOURSE.ID = @ID)

        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)

        -- update the info specific to this course

        update dbo.STUDENTSKILLCOURSE set
            STARTDATE = @STARTDATE,
            ENDDATE = @ENDDATE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = getdate()
        where ID = @ID

        -- update marking columns

        exec dbo.USP_STUDENTSKILLCOURSE_GETMARKINGCOLUMN_UPDATEFROMXML @ID, @STUDENTSKILLCOURSEMARKINGCOLUMNS, @CHANGEAGENTID

    end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch

return 0;