USP_EVENT_CHECKSCHEDULECONFLICT

Checks the availability of an event location.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@EVENTLOCATIONID uniqueidentifier IN
@EVENTDATE date IN
@STARTTIME datetime IN
@ENDTIME datetime IN

Definition

Copy


            CREATE procedure dbo.USP_EVENT_CHECKSCHEDULECONFLICT
            (
                @ID uniqueidentifier=null output,
                @EVENTLOCATIONID uniqueidentifier=null,
                @EVENTDATE date=null,
                @STARTTIME datetime=null,
                @ENDTIME datetime=null

            )
            as
            set nocount on;
            begin 
                select 
                    @ID = ID 
                from dbo.EVENT 
                where
                    (
                        (
                            STARTDATE = ENDDATE and
                            STARTDATE = @EVENTDATE and
                            (
                                (
                                    @STARTTIME >= STARTDATETIME and 
                                    @STARTTIME < ENDDATETIME
                                ) or 
                                (
                                    @ENDTIME > STARTDATETIME and 
                                    @ENDTIME <= ENDDATETIME
                                ) or
                                (
                                    @STARTTIME > STARTDATETIME and 
                                    @ENDTIME <= ENDDATETIME
                                ) or 
                                (
                                    @STARTTIME <= STARTDATETIME and 
                                    @ENDTIME >= ENDDATETIME
                                )
                            )
                        ) or
                        (
                            STARTDATE < ENDDATE and
                            @EVENTDATE between STARTDATE and ENDDATE and
                            (
                                (
                                    @STARTTIME <= STARTDATETIME and 
                                    @ENDTIME > STARTDATETIME
                                ) or 
                                (
                                    @STARTTIME >= STARTDATETIME and 
                                    @STARTTIME < ENDDATETIME
                                )
                            )
                        )
                    ) and
                    (
                        EVENTLOCATIONID = @EVENTLOCATIONID or
                        exists
                        (
                            select 1 from dbo.PROGRAMEVENTLOCATION 
                            where 
                                PROGRAMEVENTLOCATION.EVENTLOCATIONID = @EVENTLOCATIONID and
                                PROGRAMEVENTLOCATION.EVENTID = EVENT.ID
                        ) 
                    ) and
                    (
                        PROGRAMID is null or
                        exists
                        (
                            select 1 from dbo.PROGRAM
                            where
                                EVENT.PROGRAMID = PROGRAM.ID and
                                PROGRAM.ISACTIVE = 1
                        )
                    )

            end
            return 0;