USP_DATAFORMTEMPLATE_VIEW_CALENDAR

The load procedure used by the view dataform template "Calendar View Form"

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(73) IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@CALENDARID uniqueidentifier INOUT CALENDARID
@CALENDARCONTEXTID uniqueidentifier INOUT CALENDARCONTEXTID
@CALENDARSPECXML xml INOUT CALENDARSPECXML
@DATASOURCES xml INOUT DATASOURCES
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DEFAULTTIMEZONENAME nvarchar(200) INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CALENDAR
(
    @ID nvarchar(73),
    @DATALOADED bit = 0 output,
    @CALENDARID uniqueidentifier = null output,
    @CALENDARCONTEXTID uniqueidentifier = null output,
    @CALENDARSPECXML xml = null output,
    @DATASOURCES xml = null output,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @DEFAULTTIMEZONENAME nvarchar(200) = null output
)
as
    set nocount on;

    select 
        @DATALOADED = 1,
        @CALENDARID = case when len(@ID) >= 36 then substring(@ID,1,36)
                             end,
        @CALENDARCONTEXTID = case len(@ID)
                                when 73 then substring(@ID,38,36)
                             end,
        @CALENDARSPECXML = CALENDARSPECXML
    from dbo.CALENDARCATALOG
    where ID = substring(@ID,1,36)
        and 1 = dbo.UFN_INSTALLEDPRODUCTS_OPTIONALPRODUCTSINSTALLED
        (
            CALENDARCATALOG.CALENDARSPECXML.query
                (
                    'declare namespace common="bb_appfx_commontypes";
                    /*/common:InstalledProductList'
                )
        )

    declare @DATALIST_USERSETTINGS as xml
    select @DATALIST_USERSETTINGS = DATALISTS
    from dbo.USERSETTINGSCALENDAR
    where USERSETTINGSCALENDAR.APPUSERID = @CURRENTAPPUSERID
        and USERSETTINGSCALENDAR.CALENDARCATALOGID = @CALENDARID

    if @DATALOADED = 1
    begin

        select @DEFAULTTIMEZONENAME = NAME from dbo.TIMEZONEENTRY where ID = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULT();

        declare @CALENDARSOURCES table
        (
            ROW int identity(1,1),  -- Explicitly preserve the order of the datasources.
            ID nvarchar(36),
            COLORSTYLE nvarchar(20),
            ENABLED nvarchar(10)
        )

        insert into @CALENDARSOURCES
        (
            ID,
            COLORSTYLE,
            ENABLED
        )
        select
            cast(item.query('data(@DataListID)') as nvarchar(36)),
            cast(item.query('data(@ColorStyle)') as nvarchar(20)),
            cast(item.query('data(@Enabled)') as nvarchar(10))
        from @CALENDARSPECXML.nodes('//*:CalendarDataSource') as DataSources(item)

        -- Calculate the catalog visual styles
        set @DATASOURCES = (
            select
                CALENDARSOURCES.ID,
                coalesce(
                    CALENDARDATALISTCOLOR.COLORSTYLECODE, 
                    dbo.UFN_CALENDARCATALOGCOLOR_GETID(CALENDARSOURCES.COLORSTYLE)
                ) as COLORSTYLE,
                coalesce(DATALIST_USERSETTINGS.ENABLED, 
                    case when len(CALENDARSOURCES.ENABLED) = 0
                        then 1
                        else CONVERT(bit, CALENDARSOURCES.ENABLED)
                    end
                ) as ENABLED
            from
                @CALENDARSOURCES as CALENDARSOURCES
                left join dbo.CALENDARDATALISTCOLOR on 
                    CALENDARSOURCES.ID = CALENDARDATALISTCOLOR.DATALISTID and
                    @CALENDARID = CALENDARDATALISTCOLOR.CALENDARCATALOGID
                inner join dbo.DATALISTCATALOG on 
                    CALENDARSOURCES.ID = DATALISTCATALOG.ID
                left join (
                    select
                        T.c.value('(ID)[1]','uniqueidentifier') AS [ID],
                        T.c.value('(ENABLED)[1]','bit') as [ENABLED]
                    from @DATALIST_USERSETTINGS.nodes('/DATALISTS/ITEM') T(c)
                ) DATALIST_USERSETTINGS on DATALISTCATALOG.ID = DATALIST_USERSETTINGS.ID
            where
                -- Check security
                (
                    (@CURRENTAPPUSERID is null)
                    or (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1)
                    or (dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_IN_SYSTEMROLE(@CURRENTAPPUSERID, DATALISTCATALOG.ID) = 1)
                )
                -- Check product flags
                and (
                    dbo.UFN_INSTALLEDPRODUCTS_OPTIONALPRODUCTSINSTALLED(
                        DATALISTCATALOG.DATALISTSPEC.query(
                            'declare namespace common="bb_appfx_commontypes";
                            /*/common:InstalledProductList'
                        )
                    ) = 1
                )
            order by CALENDARSOURCES.ROW
            for xml raw('ITEM'),type,elements,root('DATASOURCES'),binary base64
        )
    end
    return 0;