USP_DATALIST_COURSE_CURRENTSESSION_CLASS

Returns the class meeting times for the specified time frame.

Parameters

Parameter Parameter Type Mode Description
@COURSEID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


create procedure dbo.USP_DATALIST_COURSE_CURRENTSESSION_CLASS
(
    @COURSEID uniqueidentifier
)
as
    set nocount on;

    declare @CURRENTDATE date = getdate()

    declare @CLASSMAP table
    (
        ID uniqueidentifier,
        SECTION nvarchar(20),
        COLORSTYLECODE int
    )

    insert into @CLASSMAP
    select
        CLASS.ID,
        CLASS.SECTION,
        (ROW_NUMBER() over (order by CLASS.STARTDATE, CLASS.SECTION) -1) % 12
    from dbo.CLASS
    where CLASS.COURSEID = @COURSEID
        and CLASS.STARTDATE <= @CURRENTDATE
        and CLASS.ENDDATE >= @CURRENTDATE

    select
        T.ID,
        T.CYCLEDAYID,
        @CURRENTDATE as STARTDATE,
        CLASS.SECTION as NAME,
        coalesce(TIMETABLEDAYPERIOD.PERIOD, '') + coalesce(' (' + PATTERNBLOCK.NAME + ')', '') + '<br\>' + 'test' as DESCRIPTION,
        T.STARTTIME,
        T.ENDTIME,
        CLASS.COLORSTYLECODE
    from (
        select
            CLASSMEETINGTEMPLATE.ID,
            CLASSMEETINGTEMPLATE.CYCLEDAYID,
            CLASSMEETINGTEMPLATE.STARTTIME,
            CLASSMEETINGTEMPLATE.ENDTIME,
            CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID,
            CLASSMEETINGGROUP.CLASSID,
            CLASSMEETINGGROUP.PATTERNBLOCKID,
            ROW_NUMBER() OVER (PARTITION BY
                CLASSMEETINGTEMPLATE.CYCLEDAYID,
                CLASSMEETINGTEMPLATE.STARTTIME,
                CLASSMEETINGTEMPLATE.ENDTIME,
                CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID,
                CLASSMEETINGGROUP.CLASSID
                ORDER BY CLASSMEETINGTEMPLATE.DATEADDED DESC
            ) ROW
        from dbo.CLASSMEETINGTEMPLATE
            inner join dbo.CLASSMEETINGGROUP on CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
    ) T
        inner join @CLASSMAP CLASS on T.CLASSID = CLASS.ID
        inner join dbo.CYCLEDAY on T.CYCLEDAYID = CYCLEDAY.ID
        left join dbo.TIMETABLEDAYPERIOD on T.TIMETABLEDAYPERIODID = TIMETABLEDAYPERIOD.ID
        left join dbo.PATTERNBLOCK on T.PATTERNBLOCKID = PATTERNBLOCK.ID
    where T.ROW = 1
    order by CYCLEDAY.SEQUENCE, T.STARTTIME