UFN_CONFLICTCHECK_CONFLICTSEXISTFORMULTIPLETIMES

For a large amount of non overlapping events with dates, return all events in conflict.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@EVENTS xml IN
@LOCATIONS xml IN
@RESOURCES xml IN
@STAFFRESOURCES xml IN

Definition

Copy


        CREATE function dbo.UFN_CONFLICTCHECK_CONFLICTSEXISTFORMULTIPLETIMES
        (
            @EVENTS xml,
            @LOCATIONS xml,
            @RESOURCES xml,
            @STAFFRESOURCES xml
        )
        returns @CONFLICTS table
        (
            EVENTID uniqueidentifier
        )
        as 
        begin

            declare @EVENTDATES xml

            set @EVENTDATES =
            (
                select
                    EVENTID as EVENTID,
                    dbo.UFN_DATE_ADDHOURMINUTE(dbo.UFN_DATE_GETEARLIESTTIME(STARTDATE), STARTTIME) as STARTDATETIME,
                    dbo.UFN_DATE_ADDHOURMINUTE(dbo.UFN_DATE_GETEARLIESTTIME(ENDDATE), ENDTIME) as ENDDATETIME
                from
                (
                    select
                        T.c.value('(EVENTID)[1]','uniqueidentifier') as 'EVENTID',
                        T.c.value('(STARTDATE)[1]','date') as 'STARTDATE',
                        T.c.value('(ENDDATE)[1]','date') as 'ENDDATE',
                        T.c.value('(STARTTIME)[1]','udt_HOURMINUTE') as 'STARTTIME',
                        T.c.value('(ENDTIME)[1]','udt_HOURMINUTE') as 'ENDTIME'
                    from @EVENTS.nodes('/EVENTS/ITEM') T(c)
                ) as T
                for xml raw('ITEM'),type,elements,root('EVENTDATES'),binary base64
            )

            insert into @CONFLICTS
            (
                EVENTID
            )
            select 
                EVENTID
            from
            (
                select
                    EVENTID
                from dbo.UFN_CONFLICTCHECK_GETLOCATIONCONFLICTSFORMULTIPLETIMES(@EVENTDATES,@LOCATIONS)

                union 

                select
                    EVENTID
                from dbo.UFN_CONFLICTCHECK_GETRESOURCECONFLICTSFORMULTIPLETIMES(@EVENTDATES,@RESOURCES)
                where
                    @RESOURCES is not null

                union 

                select
                    EVENTID
                from dbo.UFN_CONFLICTCHECK_GETSTAFFRESOURCECONFLICTSFORMULTIPLETIMES(@EVENTDATES,@STAFFRESOURCES)
                where
                    @STAFFRESOURCES is not null
            ) as T

            return;

        end