fnGetCalendarEvents

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@EventCalendarID int IN
@BeginDate datetime IN
@EndDate datetime IN
@Category nvarchar(4000) IN

Definition

Copy

CREATE function [dbo].[fnGetCalendarEvents]
(
    @EventCalendarID int,
    @BeginDate datetime,
    @EndDate datetime,
    @Category nvarchar(4000)
)
RETURNS @EventsTable TABLE (
        [ID] [int],
        [EventCalendarID] [int],
        [Category] [nvarchar](100),
        [CategoryName] [nvarchar](255),
        [BeginDate] [datetime],
        [BeginDateDisplay] [nvarchar](64),
        [BeginWeekDayDisplay] [nvarchar](64),
        [BeginTimeDisplay] [nvarchar](64),
        [EndDate] [datetime],
        [EndDateDisplay] [nvarchar](64),
        [EndWeekDayDisplay] [nvarchar](64),
        [EndTimeDisplay] [nvarchar](64),
        [Title] [nvarchar](255),
        [SubTitle] [nvarchar](255), 
        [Location] [nvarchar](255),
        [Details] [ntext],
        [Fees] [nvarchar](255),
        [MoreInfoURL] [nvarchar](255),
        [ContactInfo] [nvarchar](255),
        [CreatedUserID] [int],
        [CreateDate] [datetime],
        [ApprovedDate] [datetime],
        [ApprovedUserID] [int],
        [Deleted] [bit],
        [OccurenceGroupID] [int],
        [AllDayEvent] [bit],
        [UpdateDate] [datetime],
        [MapLocation] [int],
        [Cancelled] [bit],
        [TimeZoneID] [int],
        [RecurFrequency] [int],
        [RecurDay]    [int],
        [RecurMonth]    [int],
        [RecurDayOfWeek]    [nvarchar](200),--sterling changed length to 200
        [RecurStartDate]    [datetime],
        [RecurEndDate]    [datetime],
        [RecurPosition]    [int],
        [RecurMonthlyMethod]    [int],
        [RecurID]    [int],
        [RecurException]    [bit],
        [AthleticEventID] [int]
    )    
AS
    begin

    declare @Events_ByCategories_TEMPTBL table(
        [ID] [int],
        [EventCalendarID] [int],
        [Category] [nvarchar](100),
        [CategoryName] [nvarchar](255),
        [BeginDate] [datetime],
        [BeginDateDisplay] [nvarchar](64),
        [BeginWeekDayDisplay] [nvarchar](64),
        [BeginTimeDisplay] [nvarchar](64),
        [EndDate] [datetime],
        [EndDateDisplay] [nvarchar](64),
        [EndWeekDayDisplay] [nvarchar](64),
        [EndTimeDisplay] [nvarchar](64),
        [Title] [nvarchar](255),
        [SubTitle] [nvarchar](255), 
        [Location] [nvarchar](255),
        [Details] [ntext],
        [Fees] [nvarchar](255),
        [MoreInfoURL] [nvarchar](255),
        [ContactInfo] [nvarchar](255),
        [CreatedUserID] [int],
        [CreateDate] [datetime],
        [ApprovedDate] [datetime],
        [ApprovedUserID] [int],
        [Deleted] [bit],
        [OccurenceGroupID] [int],
        [AllDayEvent] [bit],
        [UpdateDate] [datetime],
        [MapLocation] [int],
        [Cancelled] [bit],
        [TimeZoneID] [int],
        [RecurFrequency] [int],
        [RecurDay]    [int],
        [RecurMonth]    [int],
        [RecurDayOfWeek]    [nvarchar](200),--sterling changed length to 200
        [RecurStartDate]    [datetime],
        [RecurEndDate]    [datetime],
        [RecurPosition]    [int],
        [RecurMonthlyMethod]    [int],
        [RecurID]    [int],
        [RecurException]    [bit],
        [AthleticEventID] [int]
    )

    INSERT INTO @Events_ByCategories_TEMPTBL
        SELECT    [ID], [EventCalendarID], [Category], '' as 'CategoryName'
            [BeginDate], dbo.fnFormatDateTime(Begindate, 'MM/DD') as 'BeginDateDisplay',
            SUBSTRING(dbo.fnFormatDateTime(Begindate, 'WEEKDAY'), 1, 3) as 'BeginWeekDayDisplay',
            dbo.fnFormatDateTime(BeginDate, 'HH:MM 12') as 'BeginTimeDisplay'
            [EndDate], dbo.fnFormatDateTime(EndDate, 'MM/DD') as 'EndDateDisplay',
            dbo.fnFormatDateTime(EndDate, 'WEEKDAY') as 'EndWeekDayDisplay',
            dbo.fnFormatDateTime(EndDate, 'HH:MM 12') as 'EndTimeDisplay'
            [Title], [SubTitle], [Location], [Details], [Fees], [MoreInfoURL], [ContactInfo], [CreatedUserID], 
            [CreateDate], [ApprovedDate], [ApprovedUserID], [Deleted], [OccurenceGroupID],
            [AllDayEvent], [UpdateDate], [MapLocation], [Cancelled], [TimeZoneID], [RecurFrequency], [RecurDay], [RecurMonth],
            [RecurDayOfWeek], [RecurStartDate], [RecurEndDate], [RecurPosition], [RecurMonthlyMethod], 
            '' as 'RecurID', [RecurException], [AthleticEventID]
        FROM dbo.CalendarEvent 
        WHERE EventCalendarID = @EventCalendarID
        AND OccurenceGroupID = 0
        AND
        (
            (@BeginDate >= BeginDate AND @EndDate <= EndDate)
            OR
            (BeginDate >= @BeginDate AND BeginDate <= @EndDate)
            OR
            (EndDate >= @BeginDate AND EndDate <= @EndDate
        )

        union all

        -- also insert the recurring events by finding those begin dates that qualify    
        SELECT    [ID], [EventCalendarID], [Category], '' as 'CategoryName'
            r.BeginDate, dbo.fnFormatDateTime(r.Begindate, 'MM/DD') as 'BeginDateDisplay',
            SUBSTRING(dbo.fnFormatDateTime(r.Begindate, 'WEEKDAY'), 1, 3) as 'BeginWeekDayDisplay',
            dbo.fnFormatDateTime(r.BeginDate, 'HH:MM 12') as 'BeginTimeDisplay'
            r.EndDate, dbo.fnFormatDateTime(r.EndDate, 'MM/DD') as 'EndDateDisplay',
            dbo.fnFormatDateTime(r.EndDate, 'WEEKDAY') as 'EndWeekDayDisplay',
            dbo.fnFormatDateTime(r.EndDate, 'HH:MM 12') as 'EndTimeDisplay'
            [Title], [SubTitle], [Location], [Details], [Fees], [MoreInfoURL], [ContactInfo], [CreatedUserID], 
            [CreateDate], [ApprovedDate], [ApprovedUserID], [Deleted], [OccurenceGroupID],
            [AllDayEvent], [UpdateDate], [MapLocation], [Cancelled], [TimeZoneID], [RecurFrequency], [RecurDay], [RecurMonth],
            [RecurDayOfWeek], [RecurStartDate], [RecurEndDate], [RecurPosition], [RecurMonthlyMethod], 
            r.RecurID, [RecurException], [AthleticEventID]
        FROM dbo.CalendarEvent c
        INNER JOIN dbo.CalendarEvtRecur r ON r.EventID = c.ID
        WHERE c.EventCalendarID = @EventCalendarID
        AND c.OccurenceGroupID > 0 
        AND
        (
            (@BeginDate >= r.BeginDate AND @EndDate <= r.EndDate)
            OR
            (r.BeginDate >= @BeginDate AND r.BeginDate <= @EndDate)
            OR
            (r.EndDate >= @BeginDate AND r.EndDate <= @EndDate
        )


    DECLARE @iPos int
    DECLARE @iCategoryGUID varchar(36)

    SET @iPos = CHARINDEX(',',@Category)
    WHILE @iPos > 0 
        begin
            SET @iCategoryGUID = LEFT(@Category,@iPos-1)
            INSERT @EventsTable
                SELECT 
                    [ID],
                    [EventCalendarID],
                    [Category],
                    [CategoryName],
                    [BeginDate],
                    [BeginDateDisplay],
                    [BeginWeekDayDisplay],
                    [BeginTimeDisplay],
                    [EndDate],
                    [EndDateDisplay],
                    [EndWeekDayDisplay],
                    [EndTimeDisplay],
                    [Title],
                    [SubTitle], 
                    [Location],
                    [Details],
                    [Fees],
                    [MoreInfoURL],
                    [ContactInfo],
                    [CreatedUserID],
                    [CreateDate],
                    [ApprovedDate],
                    [ApprovedUserID],
                    [Deleted],
                    [OccurenceGroupID],
                    [AllDayEvent],
                    [UpdateDate],
                    [MapLocation],
                    [Cancelled],
                    [TimeZoneID],
                    [RecurFrequency],
                    [RecurDay],
                    [RecurMonth],
                    [RecurDayOfWeek],
                    [RecurStartDate],
                    [RecurEndDate],
                    [RecurPosition],
                    [RecurMonthlyMethod],
                    [RecurID],
                    [RecurException],
                    [AthleticEventID]
                FROM @Events_ByCategories_TEMPTBL
                WHERE Category = @iCategoryGUID

            SET @Category = SUBSTRING(@Category,@iPos+1,LEN(@Category)-@iPos)
            SET @iPos = CHARINDEX(',',@Category)
        end

    IF (LEN(@Category) > 0)
        INSERT @EventsTable
                SELECT 
                    [ID],
                    [EventCalendarID],
                    [Category],
                    [CategoryName],
                    [BeginDate],
                    [BeginDateDisplay],
                    [BeginWeekDayDisplay],
                    [BeginTimeDisplay],
                    [EndDate],
                    [EndDateDisplay],
                    [EndWeekDayDisplay],
                    [EndTimeDisplay],
                    [Title],
                    [SubTitle], 
                    [Location],
                    [Details],
                    [Fees],
                    [MoreInfoURL],
                    [ContactInfo],
                    [CreatedUserID],
                    [CreateDate],
                    [ApprovedDate],
                    [ApprovedUserID],
                    [Deleted],
                    [OccurenceGroupID],
                    [AllDayEvent],
                    [UpdateDate],
                    [MapLocation],
                    [Cancelled],
                    [TimeZoneID],
                    [RecurFrequency],
                    [RecurDay],
                    [RecurMonth],
                    [RecurDayOfWeek],
                    [RecurStartDate],
                    [RecurEndDate],
                    [RecurPosition],
                    [RecurMonthlyMethod],
                    [RecurID],
                    [RecurException],
                    [AthleticEventID]
                FROM @Events_ByCategories_TEMPTBL
                WHERE Category = @Category


    INSERT @EventsTable
            SELECT 
                [ID],
                [EventCalendarID],
                [Category],
                [CategoryName],
                [BeginDate],
                [BeginDateDisplay],
                [BeginWeekDayDisplay],
                [BeginTimeDisplay],
                [EndDate],
                [EndDateDisplay],
                [EndWeekDayDisplay],
                [EndTimeDisplay],
                [Title],
                [SubTitle], 
                [Location],
                [Details],
                [Fees],
                [MoreInfoURL],
                [ContactInfo],
                [CreatedUserID],
                [CreateDate],
                [ApprovedDate],
                [ApprovedUserID],
                [Deleted],
                [OccurenceGroupID],
                [AllDayEvent],
                [UpdateDate],
                [MapLocation],
                [Cancelled],
                [TimeZoneID],
                [RecurFrequency],
                [RecurDay],
                [RecurMonth],
                [RecurDayOfWeek],
                [RecurStartDate],
                [RecurEndDate],
                [RecurPosition],
                [RecurMonthlyMethod],
                [RecurID],
                [RecurException],
                [AthleticEventID] 
            FROM @Events_ByCategories_TEMPTBL
            WHERE Category = ''

    UPDATE @EventsTable SET CategoryName =    
                Case Category 
                    When '' Then ''
                    Else (SELECT dbo.fnGetSiteCodeTableEntryDescription(1, Category))
                End
    UPDATE @EventsTable SET BeginTimeDisplay = 
                Case AllDayEvent
                    When 1 Then 'All day'
                    Else BeginTimeDisplay
                End
    UPDATE @EventsTable SET EndTimeDisplay = 
                Case AllDayEvent
                    When 1 Then ''
                    Else EndTimeDisplay
                End

    update @EventsTable
        set Location = ATHLETICS_LOCATIONS.Name
    from @EventsTable ET
        inner join dbo.ATHLETICS_EVENTS on ET.AthleticEventID = ATHLETICS_EVENTS.ID
        inner join dbo.ATHLETICS_LOCATIONS on ATHLETICS_EVENTS.LocationID = ATHLETICS_LOCATIONS.ID
    where ET.Location is null or ET.Location = ''

    RETURN

end