USP_DATAFORMTEMPLATE_VIEW_EDITSTUDENTSCHEDULE_STUDENT

The load procedure used by the view dataform template "Edit Student Schedule, Student View"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@STUDENT_NAME nvarchar(100) INOUT STUDENT_NAME
@GRADELEVEL nvarchar(200) INOUT GRADELEVEL
@ADVISOR nvarchar(1000) INOUT ADVISOR
@HOMEROOMTEACHER nvarchar(1000) INOUT HOMEROOMTEACHER
@HASCORECURRICULUM bit INOUT HASCORECURRICULUM
@GENDER nvarchar(100) INOUT GENDER
@COURSETERMS xml INOUT COURSETERMS
@SCHOOLGRADELEVELID uniqueidentifier INOUT SCHOOLGRADELEVELID
@WITHDRAWNCLASSCOUNT int INOUT WITHDRAWNCLASSCOUNT

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_EDITSTUDENTSCHEDULE_STUDENT
(
    @ID uniqueidentifier,
    @CURRENTAPPUSERID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @STUDENT_NAME nvarchar(100) = null output,
    @GRADELEVEL nvarchar(200) = null output,
    @ADVISOR nvarchar(1000) = null output,
    @HOMEROOMTEACHER nvarchar(1000) = null output,
    @HASCORECURRICULUM bit = null output,
    @GENDER nvarchar(100) = null output,
    @COURSETERMS xml = null output,
    @SCHOOLGRADELEVELID uniqueidentifier = null output,
    @WITHDRAWNCLASSCOUNT int = null output
)
as
    set nocount on;

    -- be sure to set this, in case the select returns no rows

    set @DATALOADED = 1;

    declare @SESSION_STARTDATE date
    declare @SESSION_ENDDATE date
    declare @SESSIONID uniqueidentifier
    declare @SCHOOLID uniqueidentifier

    select
        @SESSIONID = APPUSERSESSION.SESSIONID,
        @SESSION_STARTDATE = min(STARTDATE),
        @SESSION_ENDDATE = max(ENDDATE)
    from dbo.TERM
        inner join dbo.APPUSERSESSION on TERM.SESSIONID = APPUSERSESSION.SESSIONID
    where APPUSERSESSION.ID = @CURRENTAPPUSERID
    group by APPUSERSESSION.ID, APPUSERSESSION.SESSIONID

    select
        @SCHOOLID = SCHOOLID
    from dbo.SESSION
        inner join dbo.ACADEMICYEAR on SESSION.ACADEMICYEARID = ACADEMICYEAR.ID
    where SESSION.ID = @SESSIONID    

    exec dbo.USP_STUDENT_GETSCHEDULINGPROFILE
        @ID,
        @SESSION_STARTDATE output,
        @SESSION_ENDDATE output,
        @STUDENT_NAME output,
        null,
        @GRADELEVEL output,
        @ADVISOR output,
        @HOMEROOMTEACHER output,
        @GENDER output,
        @SCHOOLGRADELEVELID output

    select @COURSETERMS =
        (
            select
                STUDENTCOURSE.ID,
                STUDENTCOURSE.COURSEID,
                CLASS.ID as CLASSID,
                TERM.ID as TERMID,
                case when CLASS.ID is null
                    then COURSERESTRICTION.LENGTHINTERMS
                    else null
                end as LENGTHINTERMS,                    
                case when CLASSMEETINGGROUP.ID is not null
                    then dbo.UFN_CLASSMEETINGGROUP_GETFIRSTMEETING(CLASSMEETINGGROUP.ID)
                    else null
                end as FIRSTMEETING                
            from dbo.STUDENTCOURSE
                left join dbo.COURSE on STUDENTCOURSE.COURSEID = COURSE.ID
                left join dbo.STUDENTCOURSEREQUEST on STUDENTCOURSE.ID = STUDENTCOURSEREQUEST.ID
                left join dbo.COURSERESTRICTION on STUDENTCOURSE.COURSEID = COURSERESTRICTION.COURSEID
                    and STUDENTCOURSEREQUEST.CLASSSTARTDATE >= COURSERESTRICTION.STARTDATE
                    and STUDENTCOURSEREQUEST.CLASSSTARTDATE <= COURSERESTRICTION.ENDDATE
                left join dbo.STUDENTCLASSMEETINGGROUP on STUDENTCOURSE.ID = STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID                  
                left join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
                left join dbo.CLASS on CLASSMEETINGGROUP.CLASSID = CLASS.ID
                left join dbo.SESSION on SESSION.ID = @SESSIONID
                left join dbo.TERM on SESSION.ID = TERM.SESSIONID
                    and coalesce(CLASSMEETINGGROUP.STARTDATE, STUDENTCOURSEREQUEST.CLASSSTARTDATE) = TERM.STARTDATE
            where (STUDENTCOURSEREQUEST.CLASSSTARTDATE is null or TERM.ID is not null)
                and STUDENTCOURSE.STUDENTID = @ID
                and COURSE.SCHOOLID = @SCHOOLID
                and (STUDENTCOURSEREQUEST.ID is not null or TERM.ID is not null)
                and (STUDENTCLASSMEETINGGROUP.ID is null or STUDENTCLASSMEETINGGROUP.STATUSCODE = 0)
            order by TERM.STARTDATE, COURSE.COURSEID
            for xml raw('ITEM'),type,elements,root('COURSETERMS'),binary base64
        )

    select @HASCORECURRICULUM =
            case when
                exists(
                    select 1
                    from dbo.EDUCATIONALHISTORY
                        inner join dbo.STUDENTPROGRESSION on EDUCATIONALHISTORY.ID = STUDENTPROGRESSION.ENROLLMENTID
                        inner join dbo.SCHOOLGRADELEVEL on STUDENTPROGRESSION.SCHOOLGRADELEVELID = SCHOOLGRADELEVEL.ID
                        inner join dbo.CORECURRICULUM on SCHOOLGRADELEVEL.ID = CORECURRICULUM.SCHOOLGRADELEVELID
                            or (SCHOOLGRADELEVEL.SCHOOLID = CORECURRICULUM.SCHOOLID and CORECURRICULUM.SCHOOLGRADELEVELID is null)
                    where EDUCATIONALHISTORY.CONSTITUENTID = @ID
                        and not (STUDENTPROGRESSION.ENDDATE < @SESSION_STARTDATE or STUDENTPROGRESSION.STARTDATE > @SESSION_ENDDATE)
                )
                then 1
                else 0
            end,
        @WITHDRAWNCLASSCOUNT = (select COUNT(distinct CLASSMEETINGGROUP.CLASSID)
            from dbo.STUDENTCOURSE
                inner join dbo.STUDENTCLASSMEETINGGROUP on STUDENTCOURSE.ID = STUDENTCLASSMEETINGGROUP.STUDENTCOURSEID
                inner join dbo.CLASSMEETINGGROUP on STUDENTCLASSMEETINGGROUP.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
                inner join dbo.CLASS on CLASSMEETINGGROUP.CLASSID = CLASS.ID
            where STUDENTCLASSMEETINGGROUP.STATUSCODE = 2
                and STUDENTCOURSE.STUDENTID = @ID
                and CLASSMEETINGGROUP.STARTDATE >= @SESSION_STARTDATE
                and CLASSMEETINGGROUP.ENDDATE <= @SESSION_ENDDATE)

    return 0;