USP_SEARCHLIST_PROGRAMEVENT

Provides the ability to search for program events.

Parameters

Parameter Parameter Type Mode Description
@NAME nvarchar(100) IN Name
@MAXROWS smallint IN Input parameter indicating the maximum number of rows to return.
@EVENTLOCATION uniqueidentifier IN Location
@SALESMETHODTYPECODE tinyint IN Sales method
@STARTDATE date IN from
@ENDDATE date IN to
@DATESELECTTYPE tinyint IN Date
@INCLUDEPREREGISTEREDPROGRAMS bit IN Include preregistered programs

Definition

Copy


                CREATE procedure dbo.USP_SEARCHLIST_PROGRAMEVENT
                (
                    @NAME nvarchar(100) = null,
                    @MAXROWS smallint = 500,
                    @EVENTLOCATION uniqueidentifier = null,
                    @SALESMETHODTYPECODE tinyint = null,
                    @STARTDATE date = null,
                    @ENDDATE date = null,
                    @DATESELECTTYPE tinyint = null,
                    @INCLUDEPREREGISTEREDPROGRAMS bit = 1
                )
                as
                    declare @CURRENTDATE date = getdate();

                    if @DATESELECTTYPE is null
                        set @DATESELECTTYPE = 1;

                    set @STARTDATE = case @DATESELECTTYPE
                        when 1 then @CURRENTDATE
                        when 2 then @CURRENTDATE
                        when 3 then @STARTDATE
                        when 4 then @STARTDATE
                    end;

                    set @ENDDATE = case @DATESELECTTYPE
                        when 1 then @CURRENTDATE
                        when 2 then dateadd(week,1, @CURRENTDATE)
                        when 3 then @STARTDATE
                        when 4 then @ENDDATE
                    end;

                    set @NAME = replace(@NAME, '*', '%');
                    set @NAME = coalesce(@NAME,'') + '%';

                    select distinct top(@MAXROWS)
                        EVENT.ID,
                        EVENT.NAME,
                        EVENT.STARTDATETIME,
                        EVENT.ENDDATETIME,
                        EVENT.STARTTIME,
                        EVENT.ENDTIME,
                        EVENT.CAPACITY,
                        dbo.UFN_EVENT_GETLOCATIONNAME(EVENT.ID) as LOCATIONNAME,
                        EVENT.DESCRIPTION
                    from dbo.EVENT
                    inner join dbo.PROGRAM
                        on EVENT.PROGRAMID = PROGRAM.ID
                    left join dbo.PROGRAMEVENTLOCATION 
                        on EVENT.ID = PROGRAMEVENTLOCATION.EVENTID
                    left join dbo.EVENTLOCATION
                        on PROGRAMEVENTLOCATION.EVENTLOCATIONID = EVENTLOCATION.ID
                    where
                        EVENT.NAME like @NAME
                        and (@EVENTLOCATION is null or EVENTLOCATION.ID = @EVENTLOCATION)
                        and (
                            @SALESMETHODTYPECODE is null
                            or exists (
                                select top 1 1 from dbo.EVENTSALESMETHOD
                                inner join dbo.SALESMETHOD 
                                    on EVENTSALESMETHOD.SALESMETHODID = SALESMETHOD.ID
                                where EVENTSALESMETHOD.EVENTID = EVENT.ID and
                                    SALESMETHOD.TYPECODE = @SALESMETHODTYPECODE
                            )
                        )
                        and (
                            @DATESELECTTYPE = 0
                            or [EVENT].[STARTDATE] between @STARTDATE and @ENDDATE
                        )
                        and (PROGRAM.ISPREREGISTERED = 0 or @INCLUDEPREREGISTEREDPROGRAMS = 1)
                    order by
                        EVENT.STARTDATETIME
                    option (recompile);