USP_DATALIST_CLASS_MEETINGSCALENDAR

Returns the class meeting times for the specified class.

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_DATALIST_CLASS_MEETINGSCALENDAR
(
    @CLASSID uniqueidentifier
)
as
    set nocount on

    declare @CURRENTDATE date = getdate()

    select
        T.ID,
        T.CLASSID,
        T.CYCLEDAYID,
        @CURRENTDATE as STARTDATE,
        case when T.TIMETABLEDAYPERIODID is not null
            then dbo.UFN_CLASSMEETINGTEMPLATE_GETPERIODSTRING(T.ID, T.LENGTHINPERIODS) + coalesce(' (' + PATTERNBLOCK.NAME + ')', '')            
            else coalesce(PATTERNBLOCK.NAME, '')
        end as DESCRIPTION,
        T.STARTTIME,
        T.ENDTIME
    from (
        select
            CLASSMEETINGTEMPLATE.ID,
            CLASSMEETINGTEMPLATE.CYCLEDAYID,
            CLASSMEETINGTEMPLATE.STARTTIME,
            CLASSMEETINGTEMPLATE.ENDTIME,
            CLASSMEETINGTEMPLATE.LENGTHINPERIODS,
            CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID,  
            ROW_NUMBER() OVER (PARTITION BY
                CLASSMEETINGTEMPLATE.CYCLEDAYID,
                CLASSMEETINGTEMPLATE.STARTTIME,
                CLASSMEETINGTEMPLATE.ENDTIME,
                CLASSMEETINGTEMPLATE.LENGTHINPERIODS,
                CLASSMEETINGTEMPLATE.TIMETABLEDAYPERIODID  
                ORDER BY CLASSMEETINGTEMPLATE.DATEADDED DESC
            ) ROW,
            CLASSMEETINGGROUP.PATTERNBLOCKID,
            CLASSMEETINGGROUP.CLASSID
        from dbo.CLASSMEETINGTEMPLATE
            inner join dbo.CLASSMEETINGGROUP on CLASSMEETINGTEMPLATE.CLASSMEETINGGROUPID = CLASSMEETINGGROUP.ID
        where CLASSMEETINGGROUP.CLASSID = @CLASSID
    ) T
        inner join dbo.CYCLEDAY on T.CYCLEDAYID = CYCLEDAY.ID
        left join dbo.TIMETABLEDAYPERIOD on TIMETABLEDAYPERIOD.ID = T.TIMETABLEDAYPERIODID
        left join dbo.PATTERNBLOCK on PATTERNBLOCK.ID = T.PATTERNBLOCKID 
    where T.ROW = 1
    order by CYCLEDAY.SEQUENCE, T.STARTTIME